<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Nerdklapp</title>
	<atom:link href="http://grindblog.de/2006/12/06/nerdklapp/feed" rel="self" type="application/rss+xml" />
	<link>http://grindblog.de/2006/12/06/nerdklapp</link>
	<description>Magnus Niemanns Blog</description>
	<lastBuildDate>Sat, 07 Apr 2012 20:39:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Von: cstim</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2495</link>
		<dc:creator>cstim</dc:creator>
		<pubDate>Mon, 18 Dec 2006 09:04:14 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2495</guid>
		<description>@Jojo: http://www.techuser.net/randpermgen.html erzählt ganz schön, warum man das Tauschen mit der rechten Hälfte macht (übrigens einschließlich des Elements selber). Ich würd&#039;s so zusammenfassen, dass man auf diese Weise die rekursive Vorgehensweise beim Aufschreiben einer Permutation korrekt abbildet: Für die erste Position hab ich die Auswahl zwischen allen N Elementen, für die nächste Position hab ich die Auswahl zwischen den N-1 übrig gebliebenen Elementen (nämlich alle außer denen, die ich im linken Teil bereits gewählt habe) etc.

Der Beweis, dass bei dem Fisher-Yates Shuffle alle Permutationen gleich wahrscheinlich sind, ergibt sich daraus, dass man zu jeder Permutation genau einen Zweig (Kante) des Entscheidungsbaums (Graphen) aufschreibt und man nämlich N! Zweige (Kanten) bekommt, was ja auch exakt die Anzahl der möglichen Permutationen darstellt. Das Auftreten einer bestimmten Permutation hat dann korrekterweise die Wahrscheinlichkeit 1/N!.

Bei dem intuitiven Algorithmus mit einem Tausch mit einem beliebigen Element kann man den Fehler feststellen, wenn man sich ebenfalls den Entscheidungsbaum aufzeichnet: Bei jeder Position k wird eine Entscheidung zum Tausch mit eines der N-1 Elemente getroffen. Da wir N Positionen haben, verzweigt sich der Entscheidungsbaum in (N-1)^N Zweige (Kanten). Bsp N=3: (N-1)^N=8 &gt; N!=6, man hat also in diesem Fall mehr Zweige als richtigerweise nötig wären, was wiederum bedeutet, dass einige der Permutationen öfter vorkommen als andere, welches wiederum bedeutet, dass die Permutationen nun mit unterschiedlicher Wahrscheinlichkeit auftreten. q.e.d.</description>
		<content:encoded><![CDATA[<p>@Jojo: <a href="http://www.techuser.net/randpermgen.html" rel="nofollow">http://www.techuser.net/randpermgen.html</a> erzählt ganz schön, warum man das Tauschen mit der rechten Hälfte macht (übrigens einschließlich des Elements selber). Ich würd&#8217;s so zusammenfassen, dass man auf diese Weise die rekursive Vorgehensweise beim Aufschreiben einer Permutation korrekt abbildet: Für die erste Position hab ich die Auswahl zwischen allen N Elementen, für die nächste Position hab ich die Auswahl zwischen den N-1 übrig gebliebenen Elementen (nämlich alle außer denen, die ich im linken Teil bereits gewählt habe) etc.</p>
<p>Der Beweis, dass bei dem Fisher-Yates Shuffle alle Permutationen gleich wahrscheinlich sind, ergibt sich daraus, dass man zu jeder Permutation genau einen Zweig (Kante) des Entscheidungsbaums (Graphen) aufschreibt und man nämlich N! Zweige (Kanten) bekommt, was ja auch exakt die Anzahl der möglichen Permutationen darstellt. Das Auftreten einer bestimmten Permutation hat dann korrekterweise die Wahrscheinlichkeit 1/N!.</p>
<p>Bei dem intuitiven Algorithmus mit einem Tausch mit einem beliebigen Element kann man den Fehler feststellen, wenn man sich ebenfalls den Entscheidungsbaum aufzeichnet: Bei jeder Position k wird eine Entscheidung zum Tausch mit eines der N-1 Elemente getroffen. Da wir N Positionen haben, verzweigt sich der Entscheidungsbaum in (N-1)^N Zweige (Kanten). Bsp N=3: (N-1)^N=8 &gt; N!=6, man hat also in diesem Fall mehr Zweige als richtigerweise nötig wären, was wiederum bedeutet, dass einige der Permutationen öfter vorkommen als andere, welches wiederum bedeutet, dass die Permutationen nun mit unterschiedlicher Wahrscheinlichkeit auftreten. q.e.d.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jojo</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2484</link>
		<dc:creator>Jojo</dc:creator>
		<pubDate>Fri, 08 Dec 2006 17:41:37 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2484</guid>
		<description>cstim: kannst du mal rausbekommen warum man durch das tauschen mit einem beliebigen Element (also nicht nur rechts in der Liste) keine Gleichverteilung der Permutationen bekommt?</description>
		<content:encoded><![CDATA[<p>cstim: kannst du mal rausbekommen warum man durch das tauschen mit einem beliebigen Element (also nicht nur rechts in der Liste) keine Gleichverteilung der Permutationen bekommt?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Arne</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2475</link>
		<dc:creator>Arne</dc:creator>
		<pubDate>Wed, 06 Dec 2006 20:09:36 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2475</guid>
		<description>Ich stell mir gerade die Frage, ob der Fisher-Yates-Shuffle nicht an sich ausreicht, um eine passende Belegung zu finden. Es kann doch keins der Elemente auf sich selbst geshufflet werden, wenn ich nur nach rechts tausche. Dann brauche ich das mit den Nachfolgern doch gar nicht mehr, oder?</description>
		<content:encoded><![CDATA[<p>Ich stell mir gerade die Frage, ob der Fisher-Yates-Shuffle nicht an sich ausreicht, um eine passende Belegung zu finden. Es kann doch keins der Elemente auf sich selbst geshufflet werden, wenn ich nur nach rechts tausche. Dann brauche ich das mit den Nachfolgern doch gar nicht mehr, oder?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: rrho</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2474</link>
		<dc:creator>rrho</dc:creator>
		<pubDate>Wed, 06 Dec 2006 20:06:59 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2474</guid>
		<description>Wieso verkomplizieren? Ist halt Nerdwichteln.</description>
		<content:encoded><![CDATA[<p>Wieso verkomplizieren? Ist halt Nerdwichteln.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: just me</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2472</link>
		<dc:creator>just me</dc:creator>
		<pubDate>Wed, 06 Dec 2006 16:19:40 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2472</guid>
		<description>Boah ey,
Informatiker können sogar das altbewährte Wichteln komplizieren!</description>
		<content:encoded><![CDATA[<p>Boah ey,<br />
Informatiker können sogar das altbewährte Wichteln komplizieren!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: cstim</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2470</link>
		<dc:creator>cstim</dc:creator>
		<pubDate>Wed, 06 Dec 2006 14:44:03 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2470</guid>
		<description>Nachtrag: Die beschriebene zufällige Permutation ist die Standard-Vorgehensweise, auch genannt &quot;Fisher-Yates Shuffle&quot; http://www.nist.gov/dads/HTML/fisherYatesShuffle.html  http://www.stanford.edu/~blp/writings/clc/shuffle.html und http://en.wikipedia.org/wiki/Random_permutation

Aber da Jojo jetzt sowieso die php-Funktion shuffle( ) verwendet,  benutzt er eben genau sowas schon.</description>
		<content:encoded><![CDATA[<p>Nachtrag: Die beschriebene zufällige Permutation ist die Standard-Vorgehensweise, auch genannt &#8220;Fisher-Yates Shuffle&#8221; <a href="http://www.nist.gov/dads/HTML/fisherYatesShuffle.html" rel="nofollow">http://www.nist.gov/dads/HTML/fisherYatesShuffle.html</a>  <a href="http://www.stanford.edu/~blp/writings/clc/shuffle.html" rel="nofollow">http://www.stanford.edu/~blp/writings/clc/shuffle.html</a> und <a href="http://en.wikipedia.org/wiki/Random_permutation" rel="nofollow">http://en.wikipedia.org/wiki/Random_permutation</a></p>
<p>Aber da Jojo jetzt sowieso die php-Funktion shuffle( ) verwendet,  benutzt er eben genau sowas schon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: cstim</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2469</link>
		<dc:creator>cstim</dc:creator>
		<pubDate>Wed, 06 Dec 2006 14:30:38 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2469</guid>
		<description>Also, also, meine Herren (Frauen?) Informatiker, das geht aber noch besser. Letztlich ist doch der eine Teil des Problems bereits durch den ursprünglichen Vorschlag hier erschlagen: Man muss eine zufällig permutierte Liste der Teilnehmer bekommen, und dann beschenkt eben jeder den nächsten Nachbarn. Damit reduziert sich das Problem auf die Frage, wie man nun vernünftig eine permutierte Liste (Array, Vektor, whatever) bekommt, deren Permutationen bitte alle gleiche Wahrscheinlichkeit haben sollen. Die genannte Lösung &quot;Man geht einmal die Indizes der Teilnehmer von vorne bis hinten durch und tauscht das Element am aktuellen Index mit einem beliebigen zufälligen aus der Liste.&quot; klappt leider *nicht* so richtig, weil ... äh, jetzt hab ich die Begründung vergessen. Jedenfalls erreicht man eine gleichverteilte permutierte Liste genau dadurch, dass man durch die Liste geht und jedes Element mit einem zufälligen *rechts von diesem Element stehenden* Element vertauscht, nicht mit einem zufälligen Element der gesamten Liste. Der Aufwand bleibt jedenfalls der gleiche, und nachher fällt mir hoffentlich auch noch die Begründung für gerade diese Vertauschung ein. Nichts für ungut, cstim</description>
		<content:encoded><![CDATA[<p>Also, also, meine Herren (Frauen?) Informatiker, das geht aber noch besser. Letztlich ist doch der eine Teil des Problems bereits durch den ursprünglichen Vorschlag hier erschlagen: Man muss eine zufällig permutierte Liste der Teilnehmer bekommen, und dann beschenkt eben jeder den nächsten Nachbarn. Damit reduziert sich das Problem auf die Frage, wie man nun vernünftig eine permutierte Liste (Array, Vektor, whatever) bekommt, deren Permutationen bitte alle gleiche Wahrscheinlichkeit haben sollen. Die genannte Lösung &#8220;Man geht einmal die Indizes der Teilnehmer von vorne bis hinten durch und tauscht das Element am aktuellen Index mit einem beliebigen zufälligen aus der Liste.&#8221; klappt leider *nicht* so richtig, weil &#8230; äh, jetzt hab ich die Begründung vergessen. Jedenfalls erreicht man eine gleichverteilte permutierte Liste genau dadurch, dass man durch die Liste geht und jedes Element mit einem zufälligen *rechts von diesem Element stehenden* Element vertauscht, nicht mit einem zufälligen Element der gesamten Liste. Der Aufwand bleibt jedenfalls der gleiche, und nachher fällt mir hoffentlich auch noch die Begründung für gerade diese Vertauschung ein. Nichts für ungut, cstim</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jojos illustrierter Blog &#187; do it the computer science way</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2468</link>
		<dc:creator>Jojos illustrierter Blog &#187; do it the computer science way</dc:creator>
		<pubDate>Wed, 06 Dec 2006 14:00:07 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2468</guid>
		<description>[...] UPDATE(16:00) Da die Lösung mit dem Würfeln doch etwas hässlich ist, habe ich einfach mal die Vorschläge aus dem Grindblog beherzigt [...]</description>
		<content:encoded><![CDATA[<p>[...] UPDATE(16:00) Da die Lösung mit dem Würfeln doch etwas hässlich ist, habe ich einfach mal die Vorschläge aus dem Grindblog beherzigt [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Blogwerk &#187; Nerdklapp</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2467</link>
		<dc:creator>Blogwerk &#187; Nerdklapp</dc:creator>
		<pubDate>Wed, 06 Dec 2006 13:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2467</guid>
		<description>[...] Angeregt durch Jojos Cartoon und sein Skript fürs Web-Wichteln haben Magnus und ich uns heute beim Mittagessen ein paar völlig überflüssige Gedanken über einen Julklapp-Auslosungsalgorithmus mit linearem Aufwand gemacht, nachzulesen im Grindblog. [...]</description>
		<content:encoded><![CDATA[<p>[...] Angeregt durch Jojos Cartoon und sein Skript fürs Web-Wichteln haben Magnus und ich uns heute beim Mittagessen ein paar völlig überflüssige Gedanken über einen Julklapp-Auslosungsalgorithmus mit linearem Aufwand gemacht, nachzulesen im Grindblog. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: maggi</title>
		<link>http://grindblog.de/2006/12/06/nerdklapp/comment-page-1#comment-2466</link>
		<dc:creator>maggi</dc:creator>
		<pubDate>Wed, 06 Dec 2006 12:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://grindblog.de/2006/12/06/nerdklapp/#comment-2466</guid>
		<description>Liste hab ich das genannt, weil hier ja auch Nichtinformatiker mitlesen.</description>
		<content:encoded><![CDATA[<p>Liste hab ich das genannt, weil hier ja auch Nichtinformatiker mitlesen.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

