<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Chord</id>
	<title>Chord - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Chord"/>
	<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;action=history"/>
	<updated>2026-05-10T20:09:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=10529&amp;oldid=prev</id>
		<title>79.228.114.127: /* Einfache Suche */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=10529&amp;oldid=prev"/>
		<updated>2013-01-28T19:39:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Einfache Suche&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:39, 28 January 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 36:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|+ &#039;&#039;&#039;Pseudo Code für eine einfache Suche&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|+ &#039;&#039;&#039;Pseudo Code für eine einfache Suche&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Diese Form der Suche ist zwar nicht besonders effizient, da die Länge des Suchpfades linear zur Anzahl der Knoten im System wächst. Aber sie kann jederzeit als Fallback-Variante dienen. Die minimale &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vorraussetzung&lt;/del&gt; für die lineare Suche, dass jeder Knoten seinen Nachfolgeknoten kennt, ist damit auch die minimale Vorraussetzung für die Korrektheit des Chord Protokolls.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Diese Form der Suche ist zwar nicht besonders effizient, da die Länge des Suchpfades linear zur Anzahl der Knoten im System wächst. Aber sie kann jederzeit als Fallback-Variante dienen. Die minimale &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Voraussetzung&lt;/ins&gt; für die lineare Suche, dass jeder Knoten seinen Nachfolgeknoten kennt, ist damit auch die minimale Vorraussetzung für die Korrektheit des Chord Protokolls.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;||[[Image:ChordLinearSearch.jpg|thumb|250px|Einfache Suche im Chord Ring]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;||[[Image:ChordLinearSearch.jpg|thumb|250px|Einfache Suche im Chord Ring]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>79.228.114.127</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=10325&amp;oldid=prev</id>
		<title>92.231.86.232: typo</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=10325&amp;oldid=prev"/>
		<updated>2012-12-03T14:09:43Z</updated>

		<summary type="html">&lt;p&gt;typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:09, 3 December 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Chord#==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Chord#==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;geseichert&lt;/del&gt; werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gespeichert&lt;/ins&gt; werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Anwendungen =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Anwendungen =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>92.231.86.232</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=8672&amp;oldid=prev</id>
		<title>Mrfluxi: /* Stabilisierung */  kleiner fehler korrigiert</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=8672&amp;oldid=prev"/>
		<updated>2009-01-29T20:58:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Stabilisierung: &lt;/span&gt;  kleiner fehler korrigiert&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:58, 29 January 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 126:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das Stabilisierungsprotokoll von Chord sorgt dafür, dass neue Knoten im restlichen Netzwerk bekannt werden, dass die Fingertable aktualisiert wird und dass die Struktur des Rings erhalten bleibt. Dazu wird zusätzlich zum Successor Pointer und der Fingertable noch ein Zeiger auf den direkten Vorgänger Knoten (&#039;&#039;Predecessor&#039;&#039;) gespeichert. In Regelmässigen Abständen (z.B. 30 Sekunden) werden dann die Stabilisierungs Routinen &#039;&#039;fix_fingers()&#039;&#039; und &#039;&#039;stabilize()&#039;&#039; gerufen.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das Stabilisierungsprotokoll von Chord sorgt dafür, dass neue Knoten im restlichen Netzwerk bekannt werden, dass die Fingertable aktualisiert wird und dass die Struktur des Rings erhalten bleibt. Dazu wird zusätzlich zum Successor Pointer und der Fingertable noch ein Zeiger auf den direkten Vorgänger Knoten (&#039;&#039;Predecessor&#039;&#039;) gespeichert. In Regelmässigen Abständen (z.B. 30 Sekunden) werden dann die Stabilisierungs Routinen &#039;&#039;fix_fingers()&#039;&#039; und &#039;&#039;stabilize()&#039;&#039; gerufen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;fix_fingers()&#039;&#039;&#039; setzt für jeden Eintrag der Fingertable eine Suche nach dessen &#039;&#039;Start&#039;&#039;-Wert ab und trägt den zuständigen Knoten in die Tabelle ein. Dabei gibt es verschiedene Strategien, wieviele Einträge bei einem Aufruf bearbeitet werden. Es kann bei jedem Aufruf die ganze Tabelle aktualisiert werden, allerdings bedeutet das einiges an Netzwerklast. Es kann aber z.B. auch bei jedem Durchlauf ein zufällig ausgewählter Eintrag erneuert werden. Da die Korrektheit der Fingertable nur für die Performance der Suche, nicht aber für die Korrektheit des Suchergebnisses ausschlaggebend ist, kann man eine ganz aktuelle Fingertable eine gewisse zeit lang tollerieren.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;fix_fingers()&#039;&#039;&#039; setzt für jeden Eintrag der Fingertable eine Suche nach dessen &#039;&#039;Start&#039;&#039;-Wert ab und trägt den zuständigen Knoten in die Tabelle ein. Dabei gibt es verschiedene Strategien, wieviele Einträge bei einem Aufruf bearbeitet werden. Es kann bei jedem Aufruf die ganze Tabelle aktualisiert werden, allerdings bedeutet das einiges an Netzwerklast. Es kann aber z.B. auch bei jedem Durchlauf ein zufällig ausgewählter Eintrag erneuert werden. Da die Korrektheit der Fingertable nur für die Performance der Suche, nicht aber für die Korrektheit des Suchergebnisses ausschlaggebend ist, kann man eine&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; nicht&lt;/ins&gt; ganz aktuelle Fingertable eine gewisse zeit lang tollerieren.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;stabilize()&#039;&#039;&#039; holt sich den &#039;&#039;Predecessor&#039;&#039; des Nachfolgeknoten. Im Normalfall sollte das der Knoten, an dem die Funktion gerufen wird, selbst sein. Falls allerdings die ID dieses Knotens zwischen der eigenen und des Successors liegt, hat sich offensichtlich die Ringstruktur geändert. In diesem Fall wird der Überprüfte Knoten zum neuen Successor. In jedem Fall aber, wird dem Successor durch den Aufruf der &#039;&#039;notifiy()&#039;&#039; Funktion mitgeteilt, dass der rufende Knoten sich als Predeccessor versteht. Beim Aufruf von &#039;&#039;&#039;notifiy()&#039;&#039;&#039; überprüft der Knoten an dem die Funktion gerufen wird, ob der bisherige Predecessor entweder nicht verfügbar ist oder die ID des rufenden Knoten zwischen der des bisherigen Predecessors und der eigenen liegt. In diesen beiden Fällen, wird der rufende Knoten als neuer Predecessor eingetragen.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;stabilize()&#039;&#039;&#039; holt sich den &#039;&#039;Predecessor&#039;&#039; des Nachfolgeknoten. Im Normalfall sollte das der Knoten, an dem die Funktion gerufen wird, selbst sein. Falls allerdings die ID dieses Knotens zwischen der eigenen und des Successors liegt, hat sich offensichtlich die Ringstruktur geändert. In diesem Fall wird der Überprüfte Knoten zum neuen Successor. In jedem Fall aber, wird dem Successor durch den Aufruf der &#039;&#039;notifiy()&#039;&#039; Funktion mitgeteilt, dass der rufende Knoten sich als Predeccessor versteht. Beim Aufruf von &#039;&#039;&#039;notifiy()&#039;&#039;&#039; überprüft der Knoten an dem die Funktion gerufen wird, ob der bisherige Predecessor entweder nicht verfügbar ist oder die ID des rufenden Knoten zwischen der des bisherigen Predecessors und der eigenen liegt. In diesen beiden Fällen, wird der rufende Knoten als neuer Predecessor eingetragen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mrfluxi</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=8421&amp;oldid=prev</id>
		<title>T.janetzki: /* Anpassung an Strukturänderungen */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=8421&amp;oldid=prev"/>
		<updated>2008-04-04T20:47:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Anpassung an Strukturänderungen&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:47, 4 April 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 103:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 103:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Anpassung an Strukturänderungen ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Anpassung an Strukturänderungen ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bislang wurde einem bereits bestehenden Chord-Ring ausgegangen, dessen Struktur sich nicht ändert. In realen Anwendungen verhält sich das aber völlig anders. Chord muss mit neu hinzukommenden Knoten genauso fertig werden wie mit Knoten, die spontan ausfallen oder das System ordnungsgemäss verlassen. Dazu bietet Chord ein robustes Stabilisierungsprotokoll, das auf solche Ereignisse reagiert und die Struktur des Chord-Rings wahrt. Die Anforderungen für ein korrektes Funktionieren des Systems ist minimal: Chord funktioniert so lange korrekt, so lange jeder Knoten seinen Successor erreichen kann. Selbst wenn es nicht der richtige Successor ist, wirkt sich das zwar auf die Länge des Suchpfades aus, da die Suche evtl. einmal um den Ring weitergereicht wird, ein korrektes Auffinden des Knotens ist aber trotzdem sehr wahrscheinlich, da die Stabilisierung in regelmässigen Abständen läuft und diesen Fehler korrigiert. Bei falschen oder fehlenden Finger-Einträgen kann auf die [[#Einfache Suche | einfache Suche]] zurückgegriffen werden. Damit ist die Korrektheit der Fingertable nur für die Perfomance ausschlaggebend. Es kann sogar gezeigt werden: &amp;lt;cite&amp;gt;Wenn zu einem Netzwerk mit N Knoten weitere N Knoten, ohne Fingertable aber mit korrekten Successor Zeigern, hinzukommen, liegt die Anzahl der Hops für eine Suche mit hoher Wahrscheinlichkeit nach wie vor bei O(log N).&amp;lt;/cite&amp;gt; Daraus ergibt sich auch die Eigenschaft von Chord, dass selbst während des Stabilisierungsvorgangs Suchanfragen nicht nur korrekt, sondern auch mit sehr geringem Performanceverlust möglich sind.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bislang wurde&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; von&lt;/ins&gt; einem bereits bestehenden Chord-Ring ausgegangen, dessen Struktur sich nicht ändert. In realen Anwendungen verhält sich das aber völlig anders. Chord muss mit neu hinzukommenden Knoten genauso fertig werden wie mit Knoten, die spontan ausfallen oder das System ordnungsgemäss verlassen. Dazu bietet Chord ein robustes Stabilisierungsprotokoll, das auf solche Ereignisse reagiert und die Struktur des Chord-Rings wahrt. Die Anforderungen für ein korrektes Funktionieren des Systems ist minimal: Chord funktioniert so lange korrekt, so lange jeder Knoten seinen Successor erreichen kann. Selbst wenn es nicht der richtige Successor ist, wirkt sich das zwar auf die Länge des Suchpfades aus, da die Suche evtl. einmal um den Ring weitergereicht wird, ein korrektes Auffinden des Knotens ist aber trotzdem sehr wahrscheinlich, da die Stabilisierung in regelmässigen Abständen läuft und diesen Fehler korrigiert. Bei falschen oder fehlenden Finger-Einträgen kann auf die [[#Einfache Suche | einfache Suche]] zurückgegriffen werden. Damit ist die Korrektheit der Fingertable nur für die Perfomance ausschlaggebend. Es kann sogar gezeigt werden: &amp;lt;cite&amp;gt;Wenn zu einem Netzwerk mit N Knoten weitere N Knoten, ohne Fingertable aber mit korrekten Successor Zeigern, hinzukommen, liegt die Anzahl der Hops für eine Suche mit hoher Wahrscheinlichkeit nach wie vor bei O(log N).&amp;lt;/cite&amp;gt; Daraus ergibt sich auch die Eigenschaft von Chord, dass selbst während des Stabilisierungsvorgangs Suchanfragen nicht nur korrekt, sondern auch mit sehr geringem Performanceverlust möglich sind.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Stabilisierung ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Stabilisierung ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>T.janetzki</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5337&amp;oldid=prev</id>
		<title>Uhermann: /* Anwendungen */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5337&amp;oldid=prev"/>
		<updated>2006-03-29T09:22:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Anwendungen&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:22, 29 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten geseichert werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten geseichert werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Anwendungen =&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Anwendungen =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Das Cooperative File System==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das Cooperative File System (CFS) ist eine Dateisystem-Schicht die auf dem Chord-Protokoll aufbaut. Dateisystem-Blöcke werden an den Knoten gespeichert, denen das Chord-Protokoll ihre Schlüssel zuordnet. Damit erbt CFS die Performance, Robust heit und Load-Balancing-Eigenschaften in Bezug auf Referenzierung der Daten von Chord. Um die Robustheit auch in Bezug auf die Integrität der Daten zu sichern wird zusätzlich ein Replikationsmechanismus benutzt. Als weitere Performance-Optimierungen sind ebenfalls ein Caching-Schema, ähnlich wie bei Freenet, und &quot;Server Selection&quot; implementiert. Server Selection sorgt dafür, dass Anfragen im Chord-Ring nicht nur andhand der optimalen Finger-Zeiger, sondern auch Anhand von Eigenschaften des physischen Netzes geroutet werden. Führt also der momentan optimale Finger-Zeiger über einen Knoten dessen Netzwerkverbindung eine hohe Latenz aufweist, so kann mittels Server Selection auch der vorige Finger zum Weiterreichen der Anfrage benutzt werden, selbst wenn sich dadurch die Anzahl der Hops erhöht.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Siehe Auch =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Siehe Auch =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Uhermann</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5336&amp;oldid=prev</id>
		<title>Uhermann: /* Idealisierte Darstellung für &quot;volle&quot; Ringe */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5336&amp;oldid=prev"/>
		<updated>2006-03-29T08:58:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Idealisierte Darstellung für &amp;quot;volle&amp;quot; Ringe&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:58, 29 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Einbettung in den Chord Ring===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Einbettung in den Chord Ring===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Idealisierte Darstellung für &quot;volle&quot; Ringe==== [[Image:DiminishedChordEinbettung.png|left|thumb|350px|Einbettung in den Chord-Ring, aus [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)], Seite 4]] &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Idealisierte Darstellung für &quot;volle&quot; Ringe==== [[Image:DiminishedChordEinbettung.png|left|thumb|350px|Einbettung in den Chord-Ring, aus [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; David R. Karger, Matthias Ruhl,&lt;/ins&gt; Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)], Seite 4]] &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Adressen des Chord Ringes werden für diesen Zweck als Gleitkomma-Zahlen im Intervall &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt; interpretiert. Alle arithmetischen Operationen sind daher &quot;modulo 1&quot; zu verstehen. Außerdem gehe ich idealisierend davon aus, dass alle Adressen im Chord-Ring mit Knoten belegt sind.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Adressen des Chord Ringes werden für diesen Zweck als Gleitkomma-Zahlen im Intervall &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt; interpretiert. Alle arithmetischen Operationen sind daher &quot;modulo 1&quot; zu verstehen. Außerdem gehe ich idealisierend davon aus, dass alle Adressen im Chord-Ring mit Knoten belegt sind.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Für jede Untergruppe wird eine Startadresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; gewählt. Die Chord-Adresse jedes Knotens wird nun wiederum - für jede Gruppe - als ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; ausgedrückt. Für a, b und die Chord-Adresse C des Knotens gilt dabei: &amp;lt;math&amp;gt;C = (a_0 + b/2^a)&amp;lt;/math&amp;gt;. Als linkes Kind eines Knotens &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; wird nun der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b-1&amp;gt;&amp;lt;/math&amp;gt;, als rechtes Kind der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b&amp;gt;&amp;lt;/math&amp;gt; eingesetzt. Dabei fällt auf, dass die Adresse des rechten Kindes immer gleich der Adresse des Elternknotens ist - jeder Elternknoten ist sein eigenes rechtes Kind - und die Adresse des linken Kindes den Adressraum zwischen dem Elternknoten und dessen Geschwister in zwei gleiche Hälften teilt. Zudem überbrücken Referenzen von (linken) Kinder- auf Eltern-Knoten Zweierpotenzen im Adressraum und sind somit, unter der Annahme, dass alle Adressen mit Knoten belegt sind, Finger im Chord-Ring. Zudem kann ein Kindknoten C allein aus der Startaddresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; und seiner eigenen Adresse  die Adresse seines Elternknotens berechnen, da es in dem durch die m Bits der Chord-Adresse begrenzten Zahlenraum genau ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; gibt, so dass &amp;lt;math&amp;gt;C = a_0 + b/2^a&amp;lt;/math&amp;gt; gilt. Aus der so gewonnenen Gruppen-Adresse lässt sich leicht der Elternknoten bestimmen, indem entweder &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt; = &amp;lt;0,0&amp;gt;&amp;lt;/math&amp;gt; gilt und C schon der Wurzelknoten ist, oder &amp;lt;math&amp;gt;&amp;lt;a-1, (b+1)/2&amp;gt;&amp;lt;/math&amp;gt; den nächsten (&quot;echten&quot;) Elternknoten darstellt.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Für jede Untergruppe wird eine Startadresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; gewählt. Die Chord-Adresse jedes Knotens wird nun wiederum - für jede Gruppe - als ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; ausgedrückt. Für a, b und die Chord-Adresse C des Knotens gilt dabei: &amp;lt;math&amp;gt;C = (a_0 + b/2^a)&amp;lt;/math&amp;gt;. Als linkes Kind eines Knotens &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; wird nun der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b-1&amp;gt;&amp;lt;/math&amp;gt;, als rechtes Kind der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b&amp;gt;&amp;lt;/math&amp;gt; eingesetzt. Dabei fällt auf, dass die Adresse des rechten Kindes immer gleich der Adresse des Elternknotens ist - jeder Elternknoten ist sein eigenes rechtes Kind - und die Adresse des linken Kindes den Adressraum zwischen dem Elternknoten und dessen Geschwister in zwei gleiche Hälften teilt. Zudem überbrücken Referenzen von (linken) Kinder- auf Eltern-Knoten Zweierpotenzen im Adressraum und sind somit, unter der Annahme, dass alle Adressen mit Knoten belegt sind, Finger im Chord-Ring. Zudem kann ein Kindknoten C allein aus der Startaddresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; und seiner eigenen Adresse  die Adresse seines Elternknotens berechnen, da es in dem durch die m Bits der Chord-Adresse begrenzten Zahlenraum genau ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; gibt, so dass &amp;lt;math&amp;gt;C = a_0 + b/2^a&amp;lt;/math&amp;gt; gilt. Aus der so gewonnenen Gruppen-Adresse lässt sich leicht der Elternknoten bestimmen, indem entweder &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt; = &amp;lt;0,0&amp;gt;&amp;lt;/math&amp;gt; gilt und C schon der Wurzelknoten ist, oder &amp;lt;math&amp;gt;&amp;lt;a-1, (b+1)/2&amp;gt;&amp;lt;/math&amp;gt; den nächsten (&quot;echten&quot;) Elternknoten darstellt.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Uhermann</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5335&amp;oldid=prev</id>
		<title>Uhermann: /* Siehe Auch */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5335&amp;oldid=prev"/>
		<updated>2006-03-29T08:56:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Siehe Auch&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:56, 29 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 184:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 184:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#: Structured Overlay Network for Non-Uniform Load Distribution (pdf)]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#: Structured Overlay Network for Non-Uniform Load Distribution (pdf)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://pdos.csail.mit.edu/papers/cfs:sosp01/cfs_sosp.pdf Wide-area cooperative storage with CFS (pdf)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Uhermann</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5334&amp;oldid=prev</id>
		<title>Uhermann: /* Idealisierte Darstellung für &quot;volle&quot; Ringe */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5334&amp;oldid=prev"/>
		<updated>2006-03-29T08:52:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Idealisierte Darstellung für &amp;quot;volle&amp;quot; Ringe&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:52, 29 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Einbettung in den Chord Ring===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Einbettung in den Chord Ring===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Idealisierte Darstellung für &quot;volle&quot; Ringe==== [[Image:DiminishedChordEinbettung.png|left|350px|Einbettung in den Chord&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Ring]] &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Idealisierte Darstellung für &quot;volle&quot; Ringe==== [[Image:DiminishedChordEinbettung.png|left&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|thumb&lt;/ins&gt;|350px|Einbettung in den Chord&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;Ring&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, aus [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)], Seite 4&lt;/ins&gt;]] &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Adressen des Chord Ringes werden für diesen Zweck als Gleitkomma-Zahlen im Intervall &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt; interpretiert. Alle arithmetischen Operationen sind daher &quot;modulo 1&quot; zu verstehen. Außerdem gehe ich idealisierend davon aus, dass alle Adressen im Chord-Ring mit Knoten belegt sind.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Adressen des Chord Ringes werden für diesen Zweck als Gleitkomma-Zahlen im Intervall &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt; interpretiert. Alle arithmetischen Operationen sind daher &quot;modulo 1&quot; zu verstehen. Außerdem gehe ich idealisierend davon aus, dass alle Adressen im Chord-Ring mit Knoten belegt sind.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Für jede Untergruppe wird eine Startadresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; gewählt. Die Chord-Adresse jedes Knotens wird nun wiederum - für jede Gruppe - als ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; ausgedrückt. Für a, b und die Chord-Adresse C des Knotens gilt dabei: &amp;lt;math&amp;gt;C = (a_0 + b/2^a)&amp;lt;/math&amp;gt;. Als linkes Kind eines Knotens &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; wird nun der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b-1&amp;gt;&amp;lt;/math&amp;gt;, als rechtes Kind der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b&amp;gt;&amp;lt;/math&amp;gt; eingesetzt. Dabei fällt auf, dass die Adresse des rechten Kindes immer gleich der Adresse des Elternknotens ist - jeder Elternknoten ist sein eigenes rechtes Kind - und die Adresse des linken Kindes den Adressraum zwischen dem Elternknoten und dessen Geschwister in zwei gleiche Hälften teilt. Zudem überbrücken Referenzen von (linken) Kinder- auf Eltern-Knoten Zweierpotenzen im Adressraum und sind somit, unter der Annahme, dass alle Adressen mit Knoten belegt sind, Finger im Chord-Ring. Zudem kann ein Kindknoten C allein aus der Startaddresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; und seiner eigenen Adresse  die Adresse seines Elternknotens berechnen, da es in dem durch die m Bits der Chord-Adresse begrenzten Zahlenraum genau ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; gibt, so dass &amp;lt;math&amp;gt;C = a_0 + b/2^a&amp;lt;/math&amp;gt; gilt. Aus der so gewonnenen Gruppen-Adresse lässt sich leicht der Elternknoten bestimmen, indem entweder &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt; = &amp;lt;0,0&amp;gt;&amp;lt;/math&amp;gt; gilt und C schon der Wurzelknoten ist, oder &amp;lt;math&amp;gt;&amp;lt;a-1, (b+1)/2&amp;gt;&amp;lt;/math&amp;gt; den nächsten (&quot;echten&quot;) Elternknoten darstellt.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Für jede Untergruppe wird eine Startadresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; gewählt. Die Chord-Adresse jedes Knotens wird nun wiederum - für jede Gruppe - als ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; ausgedrückt. Für a, b und die Chord-Adresse C des Knotens gilt dabei: &amp;lt;math&amp;gt;C = (a_0 + b/2^a)&amp;lt;/math&amp;gt;. Als linkes Kind eines Knotens &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; wird nun der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b-1&amp;gt;&amp;lt;/math&amp;gt;, als rechtes Kind der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b&amp;gt;&amp;lt;/math&amp;gt; eingesetzt. Dabei fällt auf, dass die Adresse des rechten Kindes immer gleich der Adresse des Elternknotens ist - jeder Elternknoten ist sein eigenes rechtes Kind - und die Adresse des linken Kindes den Adressraum zwischen dem Elternknoten und dessen Geschwister in zwei gleiche Hälften teilt. Zudem überbrücken Referenzen von (linken) Kinder- auf Eltern-Knoten Zweierpotenzen im Adressraum und sind somit, unter der Annahme, dass alle Adressen mit Knoten belegt sind, Finger im Chord-Ring. Zudem kann ein Kindknoten C allein aus der Startaddresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; und seiner eigenen Adresse  die Adresse seines Elternknotens berechnen, da es in dem durch die m Bits der Chord-Adresse begrenzten Zahlenraum genau ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; gibt, so dass &amp;lt;math&amp;gt;C = a_0 + b/2^a&amp;lt;/math&amp;gt; gilt. Aus der so gewonnenen Gruppen-Adresse lässt sich leicht der Elternknoten bestimmen, indem entweder &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt; = &amp;lt;0,0&amp;gt;&amp;lt;/math&amp;gt; gilt und C schon der Wurzelknoten ist, oder &amp;lt;math&amp;gt;&amp;lt;a-1, (b+1)/2&amp;gt;&amp;lt;/math&amp;gt; den nächsten (&quot;echten&quot;) Elternknoten darstellt.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Uhermann</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5329&amp;oldid=prev</id>
		<title>Uhermann: /* Diminished Chord */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5329&amp;oldid=prev"/>
		<updated>2006-03-27T12:57:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Diminished Chord&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:57, 27 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 147:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 147:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Erweiterungen =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Erweiterungen =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Diminished Chord==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Diminished Chord==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Diminished Chord ist eine Erweiterung des Chord Protokolls mit der Untergruppen des Chord-Ringes für spezielle Anwendungen geschaffen werden. Der Vorteil dieses Vorgehens besteht in dem geringeren Overhead, da ein globaler Chord-Ring für alle Anwendungen gemeinsam genutzt werden kann und nicht jede Anwendung ihren eigenen bereitstellen muss. Die Performance-Eigenschaften von Chord bleiben dabei auch in den Untergruppen erhalten und der Zusatzaufwand für die Verwaltung der Gruppen ist vernachlässigbar klein. Im wesentlichen stellt Diminished Chord eine einzige Operation bereit: Zu einer Adresse C im Chord-Ring finde den Knoten der Gruppe X mit der nächst höheren Adresse. Dies steht in Analogie zum Protokoll des grundlegenden Chord-Ringes, der ebenfalls im wesentlichen die Operation &amp;lt;i&amp;gt;find_successor&amp;lt;/i&amp;gt; bereitstellt. Da es schon mit Chord-Mechanismen in O(log n) möglich ist den allgemeinen Nachfolger einer &amp;lt;i&amp;gt;Adresse&amp;lt;/i&amp;gt; zu finden, kann ich mich hier darauf beschränken, den Gruppen-Nachfolger eines &amp;lt;i&amp;gt;Knotens&amp;lt;/i&amp;gt; zu suchen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Funktionsweise===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Der Verzeichnisbaum====&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ein gemeinsamer, alle Knoten umfassender, im Chord-Ring eingebetteter, Verzeichnisbaum stellt die Gruppen-Suchfunktionen für alle Gruppen bereit. Die Kanten dieses Baumes sind Finger-Zeiger des Chord-Ringes. Der Baum ist binär organisiert und geordnet. Das heißt jeder Elternknoten besitzt eine Chord-Adresse die größer als alle Adressen der Knoten in seinem linken und höchstens so groß wie die kleinste Adresse der Knoten in seinem rechten Unterbaum ist. Jeder Knoten hält zusätzlich Referenzen auf alle Gruppenmitglieder mit den jeweils kleinsten Adressen in seinem rechten Unterbaum. Durch subsequentes Befragen seinter Elternknoten kann nun jeder Knoten seinen nächsten Gruppen-Nachbarn finden. Der maximale Aufwand hierfür ist die Tiefe des Baumes, liegt also in O(log n). Um neue Knoten in eine Gruppe einzufügen, muss nun nur der entsprechende Elternknoten mit dem soeben beschriebenen Verfahren gesucht und benachrichtigt, sowie dessen Gruppeninformationen selktiv übernommen werden.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Beispiel====&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:DiminishedChordBeispiel.png|right|250px|Suche im Verzeichnisbaum]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um den Suchalgorithmus zu verdeutlichen, kann folgendes Beispiel betrachtet werden. Eine Teilmenge der Knoten im Chord-Ring bildet die Gruppe der &quot;grünen&quot; Knoten. In diesem Fall sind das genau diejenigen Knoten in der Grafik, die grün eingefärbt sind. Elternknoten in deren rechten Teilbäumen grüne Knoten enthalten sind, halten Zeiger auf den jeweils kleinsten davon. Der Knoten &quot;?&quot; sucht nun seinen Nachfolger in der Gruppe der grünen Knoten. Er stellt also eine Anfrage an seinen Eltern-Knoten. Dieser reicht die Anfrage an den Knoten &quot;Blitz&quot; weiter, da er keine grünen Knoten in seimem rechten Unterbaum besitzt. &quot;Blitz&quot; gibt seinen Zeiger auf den grünen Knoten nicht weiter, da dieser sich zwischen der eigenen Adresse und der Adresse der Anfrage befindet. Daher kann es sich nicht um einen Nachfolger handeln. Die Anfrage wird also wiederum weitergereicht und der Knoten &quot;!&quot; findet schließlich den Nachfolger und gibt ihn zurück.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Einbettung in den Chord Ring===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Idealisierte Darstellung für &quot;volle&quot; Ringe==== [[Image:DiminishedChordEinbettung.png|left|350px|Einbettung in den Chord Ring]] &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Adressen des Chord Ringes werden für diesen Zweck als Gleitkomma-Zahlen im Intervall &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt; interpretiert. Alle arithmetischen Operationen sind daher &quot;modulo 1&quot; zu verstehen. Außerdem gehe ich idealisierend davon aus, dass alle Adressen im Chord-Ring mit Knoten belegt sind.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Für jede Untergruppe wird eine Startadresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; gewählt. Die Chord-Adresse jedes Knotens wird nun wiederum - für jede Gruppe - als ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; ausgedrückt. Für a, b und die Chord-Adresse C des Knotens gilt dabei: &amp;lt;math&amp;gt;C = (a_0 + b/2^a)&amp;lt;/math&amp;gt;. Als linkes Kind eines Knotens &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; wird nun der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b-1&amp;gt;&amp;lt;/math&amp;gt;, als rechtes Kind der Knoten &amp;lt;math&amp;gt;&amp;lt;a+1, 2b&amp;gt;&amp;lt;/math&amp;gt; eingesetzt. Dabei fällt auf, dass die Adresse des rechten Kindes immer gleich der Adresse des Elternknotens ist - jeder Elternknoten ist sein eigenes rechtes Kind - und die Adresse des linken Kindes den Adressraum zwischen dem Elternknoten und dessen Geschwister in zwei gleiche Hälften teilt. Zudem überbrücken Referenzen von (linken) Kinder- auf Eltern-Knoten Zweierpotenzen im Adressraum und sind somit, unter der Annahme, dass alle Adressen mit Knoten belegt sind, Finger im Chord-Ring. Zudem kann ein Kindknoten C allein aus der Startaddresse &amp;lt;math&amp;gt;a_0&amp;lt;/math&amp;gt; und seiner eigenen Adresse  die Adresse seines Elternknotens berechnen, da es in dem durch die m Bits der Chord-Adresse begrenzten Zahlenraum genau ein Paar &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; gibt, so dass &amp;lt;math&amp;gt;C = a_0 + b/2^a&amp;lt;/math&amp;gt; gilt. Aus der so gewonnenen Gruppen-Adresse lässt sich leicht der Elternknoten bestimmen, indem entweder &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt; = &amp;lt;0,0&amp;gt;&amp;lt;/math&amp;gt; gilt und C schon der Wurzelknoten ist, oder &amp;lt;math&amp;gt;&amp;lt;a-1, (b+1)/2&amp;gt;&amp;lt;/math&amp;gt; den nächsten (&quot;echten&quot;) Elternknoten darstellt.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Beispiel====&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:DiminishedChordEingebettetBeispiel.png|right|250px|Einbettung des Beispiels]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Das Beispiel für den Suchalgorithmus kann nun fortgeführt un angepasst werden. Da alle Knoten ihre eigenen rechten Kinder sind verschiebt sich die Baumstruktur wie in der Grafik zu sehen ist. Dabei wird ebenfalls klar, dass der Verzeichnisbaum weiterhin binär und sortiert ist. Weiterhin fällt auf, dass durch das Zusammenfallen der Knoten einerseits die tiefe bis auf das doppelte anwachsen kann, jedoch die Wege der Anfragen im gleichen Maße schrupfen, da die Zeit für das Routing innerhalb eines Knotens als vernachlässigbar gelten kann. Zusätzlich reduziert sich die Zahl der Zeiger auf grüne Knoten, die gespeichert werden muss durch diesen Effekt, da eine Referenz auf einen grünen Knoten nur am „höchsten“ Knoten, der für die Referenz zuständig ist, gespeichert werden muss.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Da der Chord-Adressraum ringförmig geschlossen ist, wird hier auch deutlich, dass ein spezielles Verfahren nötig ist, um den Nachfolger zu finden, falls die gesuchte Adresse größer ist als die Adresse des größten Gruppenknotens. In diesem Fall wird auch der Wurzelknoten den Nachfolger nicht sofort finden sondern statt dessen seinen linken Unterbaum rekursiv bis zum &amp;lt;i&amp;gt; kleinsten &amp;lt;/i&amp;gt; grünen Nachfolger durchsuchen. Da dies jedoch wieder nur O(log n) Schritte - die Tiefe des Baumes - benötigt werden dadurch die Performance-Eigenschaften nicht verzerrt.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====Verallgemeinerung auf &quot;dünne&quot; Ringe====&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um die Idealisierung aufzulösen sind noch einige Zusatzüberlegungen nötig. Aufgaben, die ein nicht existenter Knoten &amp;lt;math&amp;gt;&amp;lt;a,b&amp;gt;&amp;lt;/math&amp;gt; übernehmen müsste, werden von dessen Vorgänger im Chord-Ring &amp;lt;math&amp;gt;p(a,b)&amp;lt;/math&amp;gt; übernommen. Das Auffinden der Vorgänger kann ohne zusätzlichen Zeitaufwand in das Chord-Protokoll integriert werden, da der Einfüge-Algorithmus von Chord ohnehin den Vorgänger des einzufügenden Knotens passiert. Durch Verschieben der Zuständigkeit auf Vorgängerknoten, zeigen die Pre-Finger mit Intervallen 2-i unter Umständen nicht mehr genau auf die Elternknoten, sondern auf deren Vorgänger. Dieses Problem lässt sich jedoch durch Testen der Zeiger auf direkte Nachfolger identifizieren und beheben. Obwohl dieses Verfahren bei erster Betrachtung linearen Aufwand zu erzeugen scheint, lässt sich beweisen dass der Gesamtaufwand für die Suche O(log n) nicht übersteigt. Die Strecken die mit linearer Suche überbrückt werden müssen sind vernachlässigbar klein, so lange der Chord-Ring keine unverhältnismäßig großen zusammenhängenden Adressbereiche aufweist, in denen sich keine Knoten befinden. Unter der Annahme, dass die Adressen den Knoten durch eine gute Hash-Funktion zugewiesen werden, ist dies jedoch unwahrscheinlich.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Chord#==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Chord#==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten geseichert werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#] ist eine Weiterentwicklung des Chord Protokolls, an der am [http://www.zib.de Zuse Institut Berlin] gearbeitet wird. Die Gleichverteilung der Schlüssel auf Knoten in einem Chord-Ring mittels einer Basis-Hash-Funktion verhindert die Suche nach Intervallen von Schlüsselwerten, da diese auf logisch benachbarten Knoten geseichert werden müssten. &#039;&#039;Chord#&#039;&#039; eliminiert die Hashfunktion unter Beibehaltung der Perfomance von Chord und ermöglicht damit Bereichsabfragen.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Uhermann</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5112&amp;oldid=prev</id>
		<title>Tuschl: /* Siehe Auch */</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Chord&amp;diff=5112&amp;oldid=prev"/>
		<updated>2006-03-06T17:10:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Siehe Auch&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:10, 6 March 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 153:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Siehe Auch =&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Siehe Auch =&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://pdos.lcs.mit.edu/chord Chord]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://pdos.lcs.mit.edu/chord&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Official&lt;/ins&gt; Chord&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Homepage&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.pdos.lcs.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications (pdf)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.zib.de/CSR/Publications/2005-schuett-zr0540.pdf Chord#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Structured Overlay Network for Non-Uniform Load Distribution (pdf)&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://iptps04.cs.ucsd.edu/papers/karger-subgroup.pdf Diminished Chord: A Protocol for Heterogeneous Subgroup Formation in Peer-to-Peer Networks (pdf)]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tuschl</name></author>
	</entry>
</feed>