Diskrete Mathematik R (R/R+-Baum).

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Eine dynamische Menge, die diese Operationen unterstützt,
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Algorithmen und Datenstrukturen
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Der B-Baum Richard Göbel.
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – Bruder-Bäume, B-Bäume) Prof. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung Foliendesign: cand. geod. Jörg Steinrücken.
Geoinformation II Vorlesung
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
R-tree, R*-tree und R+-tree
Lösung der Aufgabe 1: Die Erweiterung des Diagramms auf „Winged Egde“ besteht in zwei Beziehungen, nr-Kante und vl-Kante, zwischen der Klasse Kante. Jede.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Geoinformation II Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Geoinformation III Vorlesung 3 Quadtrees.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Diskrete Mathe 9 Vorlesung 9 SS 2001
Animationen zu Kap. 4.3: AVL-Bäume
Effiziente Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 10 SS 2000 Quadtrees.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 8 SS 2000 Punkt-in-Polygon-Verfahren II (Trapezkarte)
Konstruktion der Voronoi-Diagramme II
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 9 SS 2000 Punkt-in-Polygon-Verfahren III (R/R + -Baum)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Vorlesung Binärer Suchbaum II-
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Graphen und Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 3 WS 01/02 Punkt-in-Polygon-Verfahren III (R/R + -Baum)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 4 WS 01/02 Quadtrees.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
Binärbäume.
Vorlesung April 2000 Polygon Overlay
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Punkt-in-Landkarte II
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Diskrete Mathematik R (R/R+-Baum)

Übersicht über das Semester Die Vorlesung besteht aus 3 Blöcken räumliche Datenbanken Zugriffsstrukturen zur Unterstützung der Suche R/R+ - Baum Quadtree Softwaretechnologie (Dr. Gröger) (fortgeschrittene) Klassendiagramme Dynamische UML-Diagramme Software-Demo: CASE-Tool „Together“ Korrektheit von Programme – Testen Normen und Standards in GIS

Übersicht über das Semester Die Vorlesung besteht aus 3 Blöcken Internet: Protokolle, Dienste und Formate (Dr. Kolbe) Offene Systeme, Rechnernetze und Internet eXtensible Markup Language (XML) XML Dokumenttyp-Definition, UML -> XML, Namespaces XML-Schema Geography Markup Language (GML 2) Form: Vorlesung mit Übungsanteilen

Übersicht Einordnung MBR – minimum bounding rectangle Idee des R-Baums 1 Übersicht Einordnung MBR – minimum bounding rectangle Idee des R-Baums Neues laufendes Beispiel R-Baum als B-Baum Exkurs: B-Baum Eigenschaften Einfügen in einen B-Baum Löschen in einem B-Baum Der R-Baum als solcher Einfügen in einen R-Baum Strategien zum Spalten eines Knotens Suchen in einem R-Baum Nachteil des R-Baums Alternative: Der R+-Baum R+-Baum Suche im R+-Baum

R-Baum Einordnung Bisher: Zerlegung des Objekts (->Trapezkarte) 2 R-Baum Einordnung Bisher: Zerlegung des Objekts (->Trapezkarte) Konstruktion einer Zugriffstruktur für das Objekt (->Trapezkarte) Alternatives Vorgehen: Approximation der Maschen durch umschließende achsenparallele Rechtecke: Minimal Bounding Rectangle (MBR) Verwaltung der Rechtecke R-Baum R+-Baum

R-Baum MBR – minimum bounding rectangle 3 R-Baum MBR – minimum bounding rectangle y Außen x A 4x

R-Baum Idee In welcher Masche M liegt der Punkt P? 4 R-Baum Idee In welcher Masche M liegt der Punkt P? Neue Frage: In welcher Bounding Box einer Masche M liegt der Punkt P? Verwende effizientes Verfahren, um alle Rechtecke R1, ... Rn zu finden, die P enthalten Jedem Rechteck Ri entspricht eine Masche Mi Prüfe, ob P in einer der Maschen M1, ... Mn vorkommt Verwende dazu das Standardverfahren Problem: Zugriffsstruktur für Rechtecke Rechtecke sind einfacher zu handhaben als Maschen im allgemeinen Nur die Rechtecke interessieren uns hier, nicht die zugrundeliegenden Maschen A 1x

R-Baum Beispiel 15 16 R11 R13 R12 R14 R15 R16 01 02 11 12 01 02 03 04 06 09 05 07 13 14 08 10 03 07 04 08 05 09 10 06

R-Baum R-Baum als B-Baum 5 R-Baum R-Baum als B-Baum Ein R-Baum ist ein B-Baum mit zusätzlichen Eigenschaften Was ist denn ein B-Baum? Ein B-Baum ist (wie der AVL-Baum) ausgeglichen Aber: Jeder Knoten enthält mehr als einen Schlüssel B-Bäume werden oft in kommerziellen Datenbanken für den schnellen Zugriff auf Festplattenspeicher genutzt. Die inneren Knoten entsprechen dann den kleinsten ansprechbaren Einheiten („Kacheln“ von 1 Kbyte oder mehr) der Festplatte.

B-Baum Exkurs B B B B B B B B B

B-Baum Beispiel der Ordnung 2 6 B-Baum Beispiel der Ordnung 2 49 16 31 52 62 78 90 13 14 15 20 29 30 38 41 50 51 55 59 63 66 71 75 80 82 86 91 95

7 B-Baum Allgemeines Der B-Baum wurde nach seinem Entwickler R. Bayer benannt. Die Suche eines Elementes in einem B-Baum unterscheidet sich nur wenig von der Suche in anderen Such-Bäumen. Das Einfügen und Entfernen von Elementen ist jedoch an vielen Stellen anders als in Binär-Such-Bäumen.

B-Baum Eigenschaften I 8 B-Baum Eigenschaften I Eigenschaften eines B-Baumes der Ordnung n: Ein B-Baum ist nicht binär Ein B-Baum ist ausgeglichen Alle Blätter haben das gleiche Niveau Jeder Knoten enthält höchstens 2n Elemente Jeder Knoten außer der Wurzel enthält mindestens n Elemente Jeder innere Knoten hat m+1 Nachfolgeknoten, wobei m die Anzahl der Schlüssel des inneren Knotens ist

B-Baum Eigenschaften II 8 B-Baum Eigenschaften II Eigenschaften eines B-Baumes der Ordnung n: Die m Elemente eines Knotens werden in aufsteigender Reihenfolge gespeichert: x1 < x2 < ... < xm Für jeden i-ten Teilbaum Si eines Knotens gilt: Die Elemente seiner Knoten sind größer als xi und kleiner als xi+1 (ganz links und ganz rechts analog) Bei einigen Varianten des B-Baums stehen alle Informationen in den Blättern

9 B-Baum Einfügen 49 52 62 52 62 78 90 50 51 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 61 Einfügen eines Elements mit dem Wert 61 52 62 78 90 61 > 49  rechter Ast 50 51 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 61 52 62 78 90 61 61 > 49  rechter Ast 52 < 61 < 62  2. Ast von links 50 51 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 61 52 62 78 90 61 > 49  rechter Ast 52 < 61 < 62  2. Ast von links 59 < 61  Einfügen 50 51 55 59 63 66 71 75 80 82 86 91 95 61 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 61 52 62 78 90 61 > 49  rechter Ast 52 < 61 < 62  2. Ast von links 59 < 61  Einfügen 50 51 61 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 61 52 62 78 90 61 > 49  rechter Ast 52 < 61 < 62  2. Ast von links 59 < 61  Einfügen 50 51 61 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 64 Einfügen eines Elements mit dem Wert 64 52 62 78 90 64 > 49  rechter Ast 50 51 61 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 64 64 > 49  rechter Ast 62 < 64 < 78  3. Ast von links 50 51 61 55 59 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 64 > 49  rechter Ast 62 < 64 < 78  3. Ast von links 63 < 64 < 66  Einfügen 50 51 61 55 59 63 66 71 75 80 82 86 91 95 64 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 64 > 49  rechter Ast 62 < 64 < 78  3. Ast von links 63 < 64 < 66  Einfügen 50 51 61 55 59 64 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 64 > 49  rechter Ast 62 < 64 < 78  3. Ast von links 63 < 64 < 66  Einfügen 50 51 61 55 59 64 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 Problem: Speicherüberlauf Lösung: Knoten sprengen 50 51 61 55 59 64 63 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 78 90 Setze das mittlere Element um eine Position nach oben Bilde zwei neue Zweige 50 51 61 55 59 63 64 66 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 66 78 90 50 51 61 55 59 63 64 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 66 78 90 50 51 61 55 59 63 64 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 66 78 90 Problem: Speicherüberlauf Lösung: Knoten sprengen 50 51 61 55 59 63 64 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 Einfügen eines Elements mit dem Wert 64 52 62 66 78 90 Setze das mittlere Element um eine Position nach oben Bilde zwei neue Zweige 50 51 61 55 59 63 64 71 75 80 82 86 91 95 A 31x

9 B-Baum Einfügen 49 66 Einfügen eines Elements mit dem Wert 64 52 62 78 90 50 51 61 55 59 63 64 71 75 80 82 86 91 95 A 31x

B-Baum Löschen Suche des Knotens, der das zu löschende Element enthält 10 B-Baum Löschen Suche des Knotens, der das zu löschende Element enthält Falls Knoten gefunden, unterscheiden wir folgende Fälle: Löschen in einem Blatt: Entfernen des Elements a) die Anzahl der Elemente des Blattes ist weiterhin >= n b) die Anzahl der Elemente des Blattes ist < n  „Unterlauf“ bereinigen Löschen in einem inneren Knoten: Eintrag durch das nächstgrößere oder nächstkleinere Element im Baum ersetzen (rechtester Eintrag im linken Unterbaum oder linkester im rechten (vgl. AVL-Bäume). a) die Anzahl der Elemente des Blattes ist weiterhin >= n b) die Anzahl der Elemente des Blattes ist < n  „Unterlauf“ bereinigen

B-Baum Löschen in einem Blatt 10 B-Baum Löschen in einem Blatt 14 49 66 Löschen des Elements mit dem Wert 75 52 62 78 90 Element suchen Element gefunden: Löschen 49 50 51 54 55 59 64 63 71 75 80 82 86 91 95 97 A 17x

B-Baum Löschen in einem Blatt 10 B-Baum Löschen in einem Blatt 14 49 66 Löschen des Elements mit dem Wert 75 52 62 78 90 Speicherunterlauf Über Vater- und Nachbar- knoten (nächstgrößeres Element) ausgleichen 49 50 51 54 55 59 63 64 71 80 82 86 91 95 97 A 17x

B-Baum Löschen in einem Blatt 10 B-Baum Löschen in einem Blatt 14 49 66 Löschen des Elements mit dem Wert 75 52 62 78 90 49 50 51 54 55 59 63 64 71 80 82 86 91 95 97 A 17x

B-Baum Löschen in einem Blatt 10 B-Baum Löschen in einem Blatt 14 49 66 Löschen des Elements mit dem Wert 75 52 62 80 90 49 50 51 54 55 59 63 64 71 78 82 86 91 95 97 A 17x

B-Baum Löschen in einem inneren Knoten 10 B-Baum Löschen in einem inneren Knoten 14 49 66 Löschen des Elements mit dem Wert 90 52 62 80 90 Element suchen Element gefunden: Löschen 49 50 51 54 55 59 63 64 71 78 82 86 91 95 97 A 17x

B-Baum Löschen in einem inneren Knoten 10 B-Baum Löschen in einem inneren Knoten 14 49 66 Löschen des Elements mit dem Wert 90 52 62 80 Speicherunterlauf Ersetzen durch nächst- größeres Element 49 50 51 54 55 59 63 64 71 78 82 86 91 95 97 A 17x

B-Baum Löschen in einem inneren Knoten 10 B-Baum Löschen in einem inneren Knoten 14 49 66 Löschen des Elements mit dem Wert 90 52 62 80 91 49 50 51 54 55 59 63 64 71 78 82 86 95 97 A 17x

Zurück zum R-Baum R R R R R R R R R

11 R-Baum ...als solcher Ein Blattknoten ist ein Paar (R,O), R ist das kleinste umschließende Rechteck, welches das Objekt O umschließt Jeder innere Knoten hat m Paare (R,T), R ist das kleinste umschließende Rechteck des Teilbaums T Ordnung beim R-Baum: (m, M) - Jeder Knoten außer der Wurzel enthält zwischen m M/2 und M Einträgen Die Wurzel hat mindestens zwei Einträge sofern sie kein Blattknoten ist Beachte: Rechtecke können sich überlappen Struktur des R-Baums hängt von Reihenfolge des Einfügens ab Jedes Paar (R,O) kommt genau einmal vor R kann mehrere umschließenden Rechtecke schneiden

R-Baum ...als solcher 15 16 R11 R13 R12 R14 R15 R16 01 02 11 12 01 02 03 04 06 09 05 07 13 14 08 10 03 07 04 08 05 09 10 06

Animiertes Beispiel der Ordnung (2,3) 12 R-Baum Einfügen Ausgangspunkt: Einfügen eines neuen Knotens in einen R-Baum Problem hier: an welche Stelle wird (R,O) eingefügt? Durchlaufe den R-Baum mit der Wurzel als Ausgangspunkt Wähle an jedem inneren Knoten den Teilbaum, der durch Einfügen von R minimal vergrößert würde Füge (R,O) schließlich als Blatt ein Beim Überlauf verfahre wie beim B-Baum Besonderheit gegenüber B-Baum: Es gibt keine lineare Ordnung zwischen den Einträgen der Knoten Verschiedene Strategien zum Spalten eines Knotens Animiertes Beispiel der Ordnung (2,3)

Minimierung der Gesamtfläche Minimierung des Durchschnitts 13 R-Baum Strategien zum Spalten eines Knotens Minimierung der Gesamtfläche Minimierung des Durchschnitts

R-Baum Punktsuche Welche (R,O) enthalten den Punkt P? 14 R-Baum Punktsuche Welche (R,O) enthalten den Punkt P? Beginne an der Wurzel innere Knoten: Durchsuche jeden Sohnknoten der Paare (R,T), die P enthalten Blattknoten: Suche alle (R,O), die P enthalten Fertig! Achtung: Ggf. muss in mehreren Teilbäumen gesucht werden! Animiertes Beispiel

R-Baum Bereichssuche Welche (R,O) schneiden das Rechteck Q? 15 R-Baum Bereichssuche Welche (R,O) schneiden das Rechteck Q? Beginne an der Wurzel innere Knoten: Durchsuche jeden Sohnknoten der Paare (R,T), die Q schneiden Blattknoten: Suche alle (R,O), die Q schneiden Fertig! Animiertes Beispiel

16 Nachteil des R-Baums Um das richtige Blatt zu finden, sind meist mehrere Durchläufe erforderlich Dies gilt insbesondere dann, wenn die Suche erfolglos ist Abhilfe: R+-Baum

Alternative: Der R+-Baum 17 Alternative: Der R+-Baum Alle inneren Rechtecke sind disjunkt Ein Objekt / umschließendes Rechteck kann in mehreren Blättern vorkommen Jedes Blatt repräsentiert den Teil von (R,O), der von dem Vaterknoten umschlossen wird

18 R+-Baum Aufbau E H A B D G J F C I 1 2 3 4 5 6 7 8 9 A 34x

18 R+-Baum Aufbau 2 1 E H A B D G J F C I 1 2 A 34x

18 R+-Baum Aufbau 2 1 E H A B D G J F C I 4 3 1 2 3 3 4 A E A 34x

R+-Baum Aufbau 2 1 E H A B D G J F C I 4 5 1 2 3 3 4 5 A E D E H A 34x 18 R+-Baum Aufbau 2 1 E H A B D G J F C I 4 5 1 2 3 3 4 5 A E D E H A 34x

R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 5 1 2 3 3 4 5 6 A E D E H B 18 R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 5 1 2 3 3 4 5 6 A E D E H B D I A 34x

R+-Baum Aufbau 6 2 1 E H A B D G J F C I 7 4 5 1 2 3 3 4 5 6 7 A E D E 18 R+-Baum Aufbau 6 2 1 E H A B D G J F C I 7 4 5 1 2 3 3 4 5 6 7 A E D E H B D I B C D A 34x

R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 8 4 5 6 7 8 A E 18 R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 8 4 5 6 7 8 A E D E H B D I B C D E G A 34x

R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 9 4 5 6 7 8 9 8 18 R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 9 4 5 6 7 8 9 8 A E D E H B D I B C D E G F J A 34x

R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 9 4 5 6 7 8 9 8 18 R+-Baum Aufbau 6 2 1 E H A B D G J F C I 4 7 5 1 2 3 3 9 4 5 6 7 8 9 8 A E D E H B D I B C D E G F J A 34x

R+-Baum Suche 6 2 1 E H A B D G J F C I 7 4 5 2 3 1 4 5 A E D H 6 7 B 18 R+-Baum Suche 6 2 1 E H A B D G J F C I 7 4 5 2 3 1 4 5 A E D H 6 7 B I C 8 9 G F J 3 9 8 A 6x