2017-02-14 4 views
1

Also habe ich dieses wirklich coole Buch aus der Universitätsbibliothek heute, Python Algorithmen von Magnus Lie Hetland und in der zweiten Kapitel des Buches erstellt er die Adjazenz Liste wie folgt, die Art von cool war:Adjazenz Set Representation in Python

a,b,c,d,e,f,g,h = range(8) 
N = [{b,c,d,e,f},{c,e},{d},{e},{f},{c,g,h},{f,h},{f,g}] 

und wenn ich tun:

N[a] ich das erste Element von N zu erhalten, und es mich irgendwie überraschend, wie es in einer solchen Art und Weise abgebildet wurde hat?

Ich habe diese Frage gefunden, aber es ist anders als das, was ich frage, lass es mich wissen, wenn es ein Duplikat ist.

Adjacency List and Adjacency Matrix in Python

Danke, Prerit

Antwort

2

Es ist nur Python.

a,b,c,d,e,f,g,h = range(8) 

ist die Tupelzuweisung. Er ordnet 0-a, 1-b usw.

N = [{b,c,d,e,f},{c,e},{d},{e},{f},{c,g,h},{f,h},{f,g}] 

ein Array N Namen erstellt, wo die 0-ten Element ist die Menge {b,c,d,e,f} usw.

Also, wenn Sie N[a] sagen, du bist auch sagen N[0], und das ist das Set, das Sie sehen.

Es ist ein cooler Trick, um einen konstanten Graphen in Python hart zu kodieren, aber wenn Sie den Graph dynamisch basierend auf Eingabe oder Ausgabe von einem anderen Algorithmus erstellen müssen, dann werden Sie eine andere Darstellung benötigen.

+0

Ich hatte meine Vermutungen, aber ich dachte, dass es nur alles, was ich oben erstellt, abbildet, aber was ist, wenn die Anzahl der Elemente 26 Buchstaben des Alphabets überschreitet, beginnt es mit aa, ab, ac ... etc? – Prerit

+0

Ich weiß über andere Darstellung Ich gehe gerade durch das Buch. Sie wissen nie, was Sie von einem einführenden Buch (Art von) lernen könnten. :) – Prerit