Leser: 42
2009-05-04T19:33:07 sid burnWas ich bisher immer noch nicht verstehe ist das Beispiel mit den Junctions und den Prime Test. Wenn ich mal Kopieren darf.
Was ich mir derzeit nicht vorstellen kann ist was das ergebniss einer Multiplikation zwischen zwei Junction ist. Ich habe Junctions jedenfalls bisher immer als "Mengen" aufgefasst. Daher die Junction repräsentiert praktisch einen wert unter vielen.
Vielleicht kann jemand den ausdruck nochmal etwas genauer erklären?
2 * any(a, b, c)
any(2*a, 2*b, 2*c)
1
2
3
4
any(2,3) * any(a, b, c)
=> any(any(2,3)*a, any(2,3)*b, any(2,3)*c)
=> any(any(2*a, 3*a), any(2*b, 3*b), any(2*c, 3*c))
=> any(2*a, 3*a, 2*b, 3*b, 2*c, 3*c)
2009-05-05T08:09:37 moritzWenn du Junctions als Menge auffassen willst, erzeugt ein binaerer Operator also das karthesische Produkt von zwei Mengen.
2009-05-05T17:36:10 sid burn2009-05-05T08:09:37 moritzWenn du Junctions als Menge auffassen willst, erzeugt ein binaerer Operator also das karthesische Produkt von zwei Mengen.
Hallo, der Satz war eher das entscheidene.
Für mich nochmal zusammengfest. Also bei Operatoionen auf Junctions, werden praktisch alle Werte der Junction bearbeitet. Das Ergebnis ist immer wieder auch eine neue Junction. Wird mit zwei Junctions operiert, wird wie du sagtest das kathesiche Produkt gebildet. Also jeder wird mit jedem anderen Wert Multipliziert. aus 2|3|4 * 2|3|4 wird dann praktisch:
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
QuoteDie resultierende Junction ist dann 4|6|8|6|9|12|8|12|16 und mit dieser neuen Junction wird der vergleich gemacht. Wenn natürlich autothreading an ist, oder implementiert ist, wird das ganze parallelisiert auf mehrere Threads verteilt.
QuoteZumindest kann ich mir so jetzt die any() * any() verknüpfung erklären. Allerdiengs hackt es bei mir noch bei deiner verkürzung die du im Artikel geschrieben hast.
Um es mal selber zu versuchen. Es wird wieder das kathesiche produkt gebildet. genauso wie bei einem any() * any(). Das ergebnis ist das gleiche, aber alle werte enthalten praktisch immer noch eine negierung.
1
2
3
4
5
6
7
8
9
none(2, 3) * any(2, 3) == 4
# autothreading über den *, zweites Argument
=> none(2 * any(2, 3), 3 * any(2, 3)) == 4
# autothreading über den *, erstes Argument
=> none(any(2*2, 2*4), any(3*2, 3*3)) == 4
# autothreading über das ==
=> none(any(4, 8) == 4, any(6, 9) == 4)
=> none(any(4 == 4, 8 == 4), any(6 == 4, 9 == 4))
=> none(any(True, False), any(False, False))
QuoteWenn also verglichen wird und das ergebnis mit == $n wahr ist, wird es wegen dem none() nochmals negiert wodurch es dann falsch wird?
1
2
3
4
# autothreading über den *, zweites Argument
=> none(2 * any(2, 3), 3 * any(2, 3)) == 4
# autothreading über den *, erstes Argument
=> none(any(2*2, 2*4), any(3*2, 3*3)) == 4
2009-05-05T19:19:22 moritzWenn du none(...)*any(...) bildest, dann wird daraus eine none-Junction, in der Any-Junctions stehen, deren Werte die Produkte sind. Allerdings kann man Junctions, die aus verschiedenen Typen bestehen, nicht abflachen.
2009-05-19T21:13:04 LanX-Wahrscheinlich immer analog zur Operation? Also weil * kommutativ ist wird die Operation auf Junctions auch kommutativ?