Satz von Carmichael

Der Satz von Carmichael (nach Robert Daniel Carmichael, 1910) ist eine zahlentheoretische Aussage über eine spezielle Klasse von einfach zu programmierenden Zufallszahlengeneratoren und liefert Kriterien, die dabei helfen, Generatoren von möglichst guter Qualität zu wählen.

Aussage des Satzes

Sei eine natürliche Zahl m {\displaystyle m} vorgegeben (der sog. Modul). Zu jeder ganzen Zahl a {\displaystyle a} als Faktor und jeder ganzen Zahl y 0 {\displaystyle y_{0}} im Bereich von 0 bis m 1 {\displaystyle m\!-\!1} (einschließlich) als Startwert (oder Saat) kann man den multiplikativen Kongruenzgenerator y i + 1 ( a y i )   mod   m {\displaystyle y_{i+1}\equiv (ay_{i})\ {\bmod {\ }}m} definieren. Die Kombination von a {\displaystyle a} und y 0 {\displaystyle y_{0}} führt zumindest dann zu einer maximalen Periodenlänge λ ( m ) {\displaystyle \lambda (m)} unter den multiplikativen Kongruenzgeneratoren mit demselben Modul m {\displaystyle m} , wenn

  1. y 0 {\displaystyle y_{0}} zu m {\displaystyle m} teilerfremd ist, d. h. g g T ( y 0 , m ) = 1 {\displaystyle \mathrm {ggT} (y_{0},m)=1} , und
  2. a {\displaystyle a} »primitives Element« modulo m {\displaystyle m} ist.

(Dabei sei eine Zahl a {\displaystyle a} als primitives Element modulo m {\displaystyle m} bezeichnet, wenn der kleinste positive Exponent e {\displaystyle e} , für den a e 1 ( mod m ) {\displaystyle a^{e}\equiv 1{\pmod {m}}} gilt, maximal ist. Ist darüber hinaus die prime Restklassengruppe ( Z / m Z ) × {\displaystyle (\mathbb {Z} /m\mathbb {Z} )^{\times }} zyklisch, dann gibt es Primitivwurzeln modulo m {\displaystyle m} , und ein »primitives Element« ist eine Primitivwurzel.)
Die Funktion λ ( m ) {\displaystyle \lambda (m)} wird Carmichael-Funktion genannt. Formeln zu ihrer Berechnung und weitere Eigenschaften finden sich im dortigen Artikel.

Beispiele

  • Zum Modul m = 10 {\displaystyle m=10} sind demnach 1, 3, 7 und 9 geeignete Startwerte y 0 {\displaystyle y_{0}} , während 3 und 7 geeignete Faktoren a {\displaystyle a} sind. In der Tat liefert etwa a = 3 {\displaystyle a=3} , y 0 = 9 {\displaystyle y_{0}=9} die Folge 9 , 7 , 1 , 3 , 9 , 7 , 1 , 3 , {\displaystyle 9,7,1,3,9,7,1,3,\ldots } mit der Periodenlänge vier – mehr ist im Fall m = 10 {\displaystyle m=10} nicht möglich.
  • Zu m = 64 {\displaystyle m=64} sind etwa a = 5 {\displaystyle a=5} und y 0 = 11 {\displaystyle y_{0}=11} geeignete Werte. Die erzeugte Folge 11 , 55 , 19 , 31 , 27 , 7 , 35 , 47 , 43 , 23 , 51 , 63 , 59 , 39 , 3 , 15 , 11 , {\displaystyle 11,55,19,31,27,7,35,47,43,23,51,63,59,39,3,15,11,\ldots } hat Periodenlänge 16 und erweckt bereits einen »leichten Eindruck von scheinbar zufälliger Unregelmäßigkeit«.

Bemerkungen

  • Die im Satz genannten Kriterien sind hinreichend; das zweite ist auch notwendig, nicht jedoch das erste. Beispielsweise liefert die Wahl m = 10 {\displaystyle m=10} , a = 3 {\displaystyle a=3} , y 0 = 2 {\displaystyle y_{0}=2} die Folge 2 , 6 , 8 , 4 , 2 , 6 , 8 , 4 , {\displaystyle 2,6,8,4,2,6,8,4,\ldots } der Periodenlänge vier, obwohl y 0 {\displaystyle y_{0}} nicht teilerfremd zu m {\displaystyle m} ist.
  • In der computertechnischen Anwendung ist m {\displaystyle m} meist eine nicht zu kleine Zweierpotenz; dann ist a {\displaystyle a} primitiv genau dann, wenn a 3 ( mod 8 ) {\displaystyle a\equiv 3{\pmod {8}}} oder a 5 ( mod 8 ) {\displaystyle a\equiv 5{\pmod {8}}} gilt. Und es gilt für alle Potenzen mit geradem Exponenten a e 1 ( mod 8 ) {\displaystyle a^{e}\equiv 1{\pmod {8}}} .

Literatur

  • Robert Daniel Carmichael. In: Bulletin of the American Mathematical Society. Nr. 16, 1910, S. 232–238.
  • Donald E. Knuth: The Art of Computer Programming, Bd. 2. Addison-Wesley, Reading, Mass. (USA) 1969, ISBN 0-201-03822-6.