NUMERISCHE BERECHNUNG VON TOPOLOGISCHER ENTROPIE Christoph Kawan August 2006 Zusammenfassung In dem Artikel Rigorous computation of topological entropy with re” spect to a finite partition“ (s. [Fro]) wird ein Algorithmus zur Berechnung von rigorosen oberen Schranken für die topologische Entropie h(T, A) einer stetigen Abbildung T : X → X bzgl. einer endlichen Partition A des kompakten Phasenraums X vorgestellt. Mittels einer Verfeinerung B von A erhält man eine topologische Markov-Kette, die als vergröberte Version“ ” des dynamischen Systems (X, T ) interpretiert werden kann. Betrachtet man die Markov-Kette als gerichteten Graphen, so kann man dessen Kanten mit Labels versehen, die der vorgegebenen Partition A entsprechen. Die Worte, die man beim Durchlaufen dieses beschrifteten Graphen erhält, bilden einen sofischen Shift, dessen Entropie eine obere Schranke für die Größe h(T, A) darstellt. Der Algorithmus berechnet eine rechtsauflösende Darstellung des sofischen Shifts, die es ermöglicht, dessen Entropie über den maximalen Eigenwert einer Transitionsmatrix zu gewinnen. Die oberen Schranken für h(T, A), die man so erhält, konvergieren gegen h(T, A), wenn der Durchmesser der verfeinerten Partition B gegen 0 strebt. 1 Entropie bzgl. einer endlichen Partition Die topologische Entropie h(T ) einer stetigen Abbildung T : X → X auf einem kompakten metrischen Raum X ist i. A. numerisch schwer zu berechnen. Der in [Fro] vorgestellte Algorithmus liefert stattdessen obere Schranken für die topologische Entropie einer Abbildung bzgl. einer endlichen Partition des Phasenraums. Im Folgenden soll dieser Entropie-Begriff definiert werden und der Zusammenhang mit der topologischen Entropie h(T ) hergestellt werden. 1.1 Definition: Sei A = {A1 , . . . , Aq } eine endliche Partition des kompakten metrischen Raums X. Dann definieren wir für jedes N ∈ N die Menge WN (T, A) := [a0 , . . . , aN −1 ] : ∃x ∈ X : T i (x) ∈ Aai für i = 0, . . . , N − 1 . 2 Ferner definieren wir die topologische Entropie h∗(T , A) von T bzgl. der Partition A durch log |WN (T, A)| . N →∞ N h∗ (T, A) := lim (1) Dabei wird mit |WN (T, A)| die Kardinalität der Menge WN (T, A) bezeichnet. Die Größe N1 log |WN (T, A)| beschreibt die Wachstumsrate der Anzahl von verschiedenen Worten, die durch die Orbits von T erzeugt werden, bei wachsender Wortlänge. Aufgrund der Subadditivität1 der Folge N 7→ log |WN (T, A)| existiert der Limes in (1) und es gilt log |WN (T, A)| . N ≥1 N h∗ (T, A) = inf Ferner ist unmittelbar ersichtlich, dass stets h∗ (T, A) ≤ log q gilt, wenn q = |A|. 1.2 Definition: S i Eine Partition A heißt erzeugend, wenn das Mengensystem ∞ i=0 T (A) die Borel’sche σ-Algebra von X erzeugt. Der folgende Satz stellt nun den Zusammenhang zwischen der Größe h∗ (T, A) und der topologischen Entropie h(T ) her. Seinen Beweis findet man in [Fro, Appendix B, S. 81]. 1.3 Satz: (1) Ist A erzeugend, so gilt h(T ) ≤ h∗ (T, A). (2) h(T ) ≤ lim inf diam A→0 h∗ (T, A). Der zweite Teil des Satzes bedeutet, dass man durch sukzessive Verfeinerung einer Partition A im Limes eine obere Schranke für h(T ) erhält. Dieser Teil ist jedoch für den Algorithmus unerheblich, da man bei diesem stets von einer fest gewählten (groben) Partition A ausgeht, von der weiß oder hofft, dass sie erzeugend ist. In der Praxis ist es jedoch oft schwer oder gar unmöglich, eine nachweislich erzeugende Partition zu finden. Ein weiterer Nachteil des Algorithmus ist, dass man lediglich obere Schranken für die topologische Entropie erhält und dass anscheinend keine Aussagen darüber gemacht werden können, in welchen Fällen die Größen h(T ) und h∗ (T, A) übereinstimmen. In [Fro, Remark B.2, S. 81] wird ein Beispiel angegeben, in dem h∗ (T, A) = log 2 und h(T ) = 0 gilt. Die Autoren des Artikels glauben jedoch, dass ein solcher Fall selten eintritt und belegen dies anhand von mehreren Beispielen, in denen die Entropie bereits bekannt ist. 1 Eine Folge xn reeller Zahlen heißt subadditiv, falls xm+n ≤ xm + xn für alle m, n ∈ N gilt. 3 2 2.1 Der Algorithmus Konstruktion der topologischen Markov-Kette Zunächst muss man eine Partition A des Phasenraums wählen, um dann obere Schranken für h∗ (T, A) zu bestimmen. Oft legt bereits die Dynamik des Systems eine bestimmte Wahl von A nahe, wie wir später auch an einem Beispiel sehen werden. Da stets h∗ (T, A) ≤ log q gilt (q = |A|), sollte ferner sichergestellt sein, dass log q eine obere Schranke für h(T ) ist (s. auch [Fro, Theorem 3, S. 70]). Nun wählt man eine Verfeinerung B = {B1 , . . . , Bn } von A, d. h. jede der Mengen von A ist Vereinigung von Mengen aus B. Je feiner B bzgl. A gewählt wird, desto genauer wird die Größe h∗ (T, A) approximiert. Man definiert eine n × n-Transitionsmatrix B = (Bij ) durch 1 falls Bi ∩ T −1 (Bj ) 6= ∅, Bij := 0 andernfalls. Durch B ist eine topologische Markov-Kette gegeben, die auch als gerichteter Graph angesehen werden kann. Wir nennen [b0 , . . . , bN −1 ] ein B-Wort der Länge N , falls Bbi bi+1 = 1 für i = 0, . . . , N −2 gilt. Jedes B-Wort erzeugt ein eindeutig bestimmtes A-Wort [a0 , . . . , aN −1 ] derselben Länge mittels der Inklusion Bbi ⊂ Aai . Wir definieren für jedes N ∈ N die Menge WN (B, A) := {[a0 , . . . , aN −1 ]| ∃ B - Wort [b0 , . . . , bN −1 ] : ∀i : Bbi ⊂ Aai } , und die zugehörige Wachstumsrate log |WN (B, A)| . N →∞ N h(B, A) := lim Ist [a0 , . . . , aN −1 ] ∈ WN (T, A), so gilt T i (x) ∈ Aai für ein x ∈ X und i = 0, . . . , N − 1. Ferner gilt T i (x) ∈ Bbi für gewisse eindeutig bestimmte bi ∈ {1, . . . , n}, wobei Bbi ⊂ Aai . Damit folgt Bbi ∩T −1 (Bbi+1 ) 6= ∅ für i = 0, . . . , N − 2. Also ist [b0 , . . . , bN −1 ] ein B-Wort, welches [a0 , . . . , aN −1 ] erzeugt. Es folgt WN (T, A) ⊂ WN (B, A) und damit h(B, A) ≥ h∗ (T, A). Ferner gilt der folgende Satz, dessen Beweis sich in [Fro, Appendix B, S. 81] findet. 2.1 Satz: Sei A eine Partition von X, bestehend aus kompakten Mengen. Dann gilt lim diam B→0 h(B, A) = h∗ (T, A). Die Voraussetzung, dass die Partitionsmengen alle kompakt sein sollen, ist natürlich i. A. nicht realisierbar. Es handelt sich dabei lediglich um eine technische Voraussetzung, die in der Praxis (hier verwendet man als Partitionsmengen stets Quader im Rn ) keine Rolle spielt, solange der Schnitt der Abschlüsse zweier Partitionsmengen leeres Inneres hat. 4 2.2 Der zugehörige sofische Shift Der Grund, warum man die beschriebene Markov-Kette konstruiert, ist, dass man die Größe h(B, A) exakt berechnen kann. Um dies zu tun, betrachtet man die Markov-Kette als gerichteten Graphen G(B, A) mit Knotenmenge {1, . . . , n} (n = |B|) und beschrifteten Kanten, die man folgendermaßen erhält: Jede Partitionsmenge aus A erhält als Label einen Buchstaben aus einem Alphabet L = {a, b, c, . . .}. Eine gerichtete Kante läuft vom Knoten i zum Knoten j genau dann, wenn Bij = 1. Diese Kante erhält als Beschriftung den Buchstaben, welcher der Partitionsmenge A ∈ A zugeordnet wurde mit Bi ⊂ A. Wir wollen dies anhand eines einfachen Beispiels veranschaulichen. 2.2 Beispiel: Wir betrachten die (stückweise) stetige Abbildung T : [0, 1] → [0, 1], 2x für x < 12 , T (x) := 1 1 3 2 (x − 2 ) für x ≥ 2 . Wir wählen die folgenden Partitionen: A = {A1 , A2 } = {[0, 21 ), [ 12 , 1)}, B = {B1 , B2 , B3 , B4 } = {[0, 41 ), [ 41 , 21 ), [ 12 , 34 ), [ 43 , 1)}. Damit erhält man die Transitionsmatrix 1 1 0 0 0 1 B= 1 1 0 0 1 1 0 1 . 0 0 Ordnen wir der Menge A1 das Label a und der Menge A2 das Label b zu, so erhalten wir folgenden Graphen. a a 1 2 b b a b a 3 b 4 Die Worte, die man beim Durchlaufen des Graphen erhält, können nicht das Resultat eines Subshifts vom endlichen Typ auf der Symbolmenge {a, b} sein, da etwa die Worte [aa], [ab], [ba] und [bb] erlaubt sind, aber nicht [bbb]. 5 2.3 Die rechtsauflösende Darstellung des sofischen Shifts Wir bezeichnen mit W(G(B, A)) die Menge der biinfiniten Worte, die man erhält, indem man den Graph G(B, A) durchläuft. Wir wollen nun eine rechtsauflösende Darstellung des Graphen bestimmen, d. h. einen beschrifteten Graphen G 0 (B, A), der dieselbe Wortmenge liefert (W(G 0 (B, A)) = W(G(B, A))), aber zusätzlich die Eigenschaft hat, dass je zwei Kanten, die vom selben Knoten ausgehen, verschiedene Labels tragen. Wie man anhand des Graphen in Beispiel 2.2 sieht, muss der Graph G(B, A) diese Eigenschaft nicht haben (vom Knoten 1 gehen zwei Kanten aus, die beide das Label a tragen). Der Vorteil des Graphen G 0 (B, A) ist, dass man die Entropie des sofischen Shifts leicht über die zugehörige Transitionsmatrix bestimmen kann. Wir wollen nun einen Algorithmus beschreiben, der den essentiellen Subgra” phen“ R eines solchen Graphen G 0 berechnet. R nennen wir eine reduzierte rechtsauflösende Darstellung von G. Die Knoten von R bezeichnen wir als Hyperknoten und die Kanten als Hyperkanten. Hyperknoten sind Teilmengen von {1, . . . , n}. (1) Starte mit einem Graphen R, der nur aus einem einzigen Hyperknoten besteht – einer zufällig ausgewählten einelementigen Teilmenge von {1, . . . , n}. (2) Falls möglich, wähle einen Hyperknoten H im Graphen R, von dem keine Kanten ausgehen, andernfalls gehe zu Schritt 6. (3) Bezeichne mit H 0 die Menge der Knoten in G(B, A), die von Kanten erreicht werden, welche von den Knoten in H ausgehen und das Label a tragen. Füge den Hyperknoten H 0 (falls nicht bereits vorhanden) und eine Hyperkante mit Label a hinzu, welche bei H startet und bei H 0 endet. (4) Wiederhole Schritt 3 für alle Buchstaben (Labels) des Alphabets L = {a, b, c, . . .}. (5) Kehre zurück zu Schritt 2. (6) Entferne alle Hyperknoten in R, bei denen keine Hyperkanten enden zusammen mit den Hyperkanten, die von ihnen ausgehen. (7) Wurden in Schritt 6 Hyperknoten entfernt, so kehre zurück zu Schritt 6, andernfalls beende die Prozedur. Wir wollen nun den Algorithmus auf den Graphen aus Beispiel 2.2 anwenden: • Vom Knoten 1 im Graph G(B, A) gehen mit a beschriftete Kanten aus, die bei den Knoten 1 und 2 enden. Deshalb erzeugen wir den Hyperknoten {1, 2} und eine Hyperkante, beschriftet mit a, die bei {1} startet und bei {1, 2} endet. Weitere Kanten gehen vom Knoten 1 nicht aus. • Betrachte jetzt den Hyperknoten {1, 2}. Die Knoten 1 und 2 haben ausgehende Kanten mit Label a, die bei den Knoten 1 − 4 enden. Also fügen wir den Hyperknoten {1, 2, 3, 4} hinzu und eine Hyperkante von {1, 2} nach 6 {1, 2, 3, 4}, welche das Label a trägt. Weitere Kanten gehen von den Knoten 1 und 2 nicht aus. • Von den Knoten 1 − 4 gehen sowohl Kanten mit Label a als auch mit Label b aus. Betrachte diejenigen mit Label a. Mit diesen erreicht man die Knoten 1− 4, also fügen wir eine Hyperkante mit Label a vom Hyperknoten {1, 2, 3, 4} zu sich selbst hinzu. Die mit b beschrifteten Kanten führen zu den Knoten 1 − 3. Also kommt der Hyperknoten {1, 2, 3} hinzu und eine Hyperkante von {1, 2, 3, 4} nach {1, 2, 3}, welche das Label b trägt. • Die Knoten 1 − 3 haben wieder ausgehende Kanten mit Label a und b. Die mit a beschrifteten enden bei den Knoten 1 − 4, also fügen wir eine Hyperkante mit Label a von {1, 2, 3} nach {1, 2, 3, 4} hinzu. Die Kanten mit Label b erreichen die Knoten 1 und 2, also wird eine Hyperkante von {1, 2, 3} nach {1, 2} mit Beschriftung b hinzugefügt. • Nun haben alle Hyperknoten ausgehende Hyperkanten, also suchen wir nach Hyperknoten, die nicht von Hyperkanten erreicht werden. • Nur der Hyperknoten {1} hat keine eingehenden Hyperkanten, also entfernen wir diesen und die Hyperkante, die von ihm ausgeht. • Die restlichen Hyperknoten haben alle eingehende Hyperkanten, also beenden wir hier die Prozedur. Der Graph der rechtsauflösenden Darstellung sieht also folgendermaßen aus: a {1} {1,2} b a a {1,2, 3,4} {1,2,3} b a Da nach Schritt 3 des Algorithmus einem Hyperknoten nur dann eine Hyperkante mit einem bestimmten Label hinzugefügt wird, wenn er noch keine ausgehenden Hyperkanten besitzt, hat der Graph R die gewünschte Eigenschaft, rechtsauflösend zu sein. Der Algorithmus beruht im Wesentlichen auf [Lnd, Theorem 3.3.2 u. 3.3.11]. Die formale Konstruktion einer rechtsauflösenden Darstellung, die dort beschrieben wird, verlangt jedoch eine initiale Kollektion von Hyperknoten, die aus allen 2n Teilmengen von {1, . . . , n} besteht. In [Fro, Prop. B.12, S. 83] wird jedoch gezeigt, dass nicht die volle rechtsauflösende Darstellung nötig ist, um eine geeignete Transitionsmatrix zu erhalten, welche die Entropie des sofischen Shifts liefert. Dies funktioniert jedoch nur unter der Voraussetzung, dass der 7 sofische Shift W-irreduzibel ist (siehe [Fro, Def. B.4, S. 82]). In der Tat liefert der Algorithmus eine irreduzible Komponente der vollen rechtsauflösenden Darstellung, und die Entropie dieser irreduziblen Komponente ist identisch mit der vollen Entropie nach [Fro, Cor. B.11, S. 83]. 2.4 Berechnung der Entropie des sofischen Shifts Der Graph R liefert eine Transitionsmatrix R = (Rij ). Ist m die Anzahl der Hyperknoten in R, so handelt es sich dabei um eine m × m-Matrix mit ganzzahligen Einträgen, die folgendermaßen definiert ist: Rij := # {Hyperkanten vom Hyperknoten i zum Hyperknoten j} . Mit Hilfe der Matrix R können wir nun die Entropie der topologischen MarkovKette bzgl. der Partition A berechnen. 2.3 Satz: Sei T topologisch transitiv und sei λ der maximale Eigenwert von R. Dann gilt h∗ (T, A) ≤ h(B, A) = log λ.2 Der Beweis dieses Satzes findet sich in [Fro, Appendix B.3, S. 83]. 2.4 Beispiel: Die Transitionsmatrix R für die reduzierte rechtsauflösende Darstellung von Beispiel 2.2 sieht folgendermaßen aus: {1, 2} {1, 2, 3} {1, 2, 3, 4} {1, 2} {1, 2, 3} {1, 2, 3, 4} 0 0 1 1 0 1 0 1 1 Der größte Eigenwert von R ist ungefähr λ = 1.8393. Damit ergibt sich h(B, A) = log 1.8393 ≥ h∗ (T, A). Für B = A hätten wir h(B, A) = log 2 erhalten. Indem man B = {B1 , B2 , B3 , B4 } wählt, eliminiert man das Wort [bbb], das mit B = A erlaubt wäre, und verringert so die Entropie. Je feiner die Partition B gemacht wird, desto mehr Worte werden eliminiert und die Größe h(B, A) konvergiert von oben gegen h∗ (T, A). Für nicht transitives T ist h(T ) das Maximum der Entropie aller Einschränkungen von T auf transitive Gebiete. Es ist möglich, dass die topologische MarkovKette, die durch B gegeben ist, dennoch transitiv ist, und in diesem Fall kann der Algorithmus genau wie zuvor angewendet werden, um obere Schranken für h∗ (T, A) und h(T ) zu bekommen. Ist die topologische Markov-Kette nicht transitiv (d. h. nicht irreduzibel), so muss der Algorithmus separat auf jede irreduzible Komponente angewendet werden. 2 Nach dem Perron-Frobenius-Theorem existiert ein reeller Eigenwert, der größer als die Beträge aller anderen Eigenwerte von R ist. 8 3 3.1 Beispiele Eine Familie von logistischen Abbildungen Wir betrachten die auf dem Einheitsintervall [0, 1] definierten logistischen Abbildungen fµ (x) = µx(1 − x) mit µ ∈ [3.5, 4]. Es handelt sich dabei um unimodale Abbildungen, die auf [0, 12 ] streng monoton wachsen und auf [ 12 , 1] streng monoton fallen. Jedem, der mit der Dynamik von Intervallabbildungen vertraut ist (Stichwort: kneading theory), wird es einleuchten, dass sich hier die Partition A = {[0, 21 ), [ 12 , 1]} anbietet, um zu garantieren, dass h∗ (fµ , A) eine obere Schranke für die topologische Entropie ist. Die folgende Grafik stellt die von dem Algorithmus berechneten Entropie-Werte für die Familie fµ dar, aufgetragen gegen den Parameter µ. Als verfeinerte Partition wurde dabei eine äquidistante Partition von [0, 1] in 212 Teilintervalle gewählt. 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 3.5 3.2 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4 Ein hyperbolischer linearer Torus-Automorphismus Wir betrachten den hyperbolischen linearen Torusautomorphismus T (x, y) = √ 1 (x + y, x) mod 1. Es ist bekannt, dass h(T ) = log 2 ( 5 + 1) ≈ log 1.6180 gilt. Wir setzen A := {[0, 1) × [0, 21 ), [0, 1) × [ 21 , 1)} und erzeugen die Verfeinerung B durch wiederholte Bisektionen des Torus, d. h. die Elemente von B sind von der Form [(p − 1)/2k , p/2k ) × [(q − 1)/2k , q/2k ), p, q = 1, . . . , 2k , k ≥ 1. Die Ergebnisse des Algorithmus sind in der unten stehenden Tabelle aufgelistet. k 2 3 4 5 6 |B| 16 64 256 1024 4096 # Hyperknoten 32 144 448 1792 7472 Max. Größe der Hyperknoten 5 10 21 42 83 h(B, A) log 1.8393 log 1.7494 log 1.6916 log 1.6583 log 1.6393 9 Während in diesem Beispiel die Anzahl der Hyperknoten tendenziell etwas kleiner als das Doppelte der Kardinalität der Partition B zu sein scheint, zeigt sich in anderen Beispielen völlig gegensätzliches Verhalten (siehe [Fro, S. 76-78]). 4 Implementation Ein Programm, das den beschriebenen Algorithmus realisiert, muss im Wesentlichen die folgenden zwei Rechenschritte durchführen: (1) Berechnung der Transitionsmatrix B: In der Praxis berechnet man aus Gründen der Effizienz die Transitionsmatrix B nicht für eine volle Partition des Phasenraums X, sondern verwendet stattdessen Subdivisionstechniken, um immer feinere Überdeckungen der kettenrekurrenten Menge von T in X zu erhalten. In jedem Schritt dieser Prozedur wird die Matrix B für die aktuelle Kollektion von Mengen ( Boxen“) berechnet. ” (2) Berechnung der (reduzierten) rechtsauflösenden Darstellung des sofischen Shifts: Dieser Schritt beinhaltet die Berechnung des Graphen R und letztendlich der zugehörigen Transitionsmatrix R. Es ist zu überlegen, welche Datenstruktur man zum Abspeichern des Graphen verwendet, so dass einerseits nicht zu viel Speicherplatz benötigt wird und andererseits die im Algorithmus durchzuführenden Operationen rechenzeitsparend umgesetzt werden können. Zur Realisierung von Schritt 1 existieren effiziente Routinen, die in dem von Michael Dellnitz und Oliver Junge entwickelten Softwarepaket GAIO3 (Global Analysis of Invariant Objects) integriert sind. Für eine Einführung in GAIO siehe [Del] und [Ras]. Zur Abspeicherung des Hypergraphen im zweiten Schritt wird in [Fro] vorgeschlagen, einen Baum (mit variabler Anzahl von Kindern pro Knoten) als Datenstruktur zu verwenden. Dabei wird jedem Knoten N des Baumes T ein Paar (i(N ), s(N )) zugeordnet mit i(N ) ∈ {1, . . . , n} und s(N ) ∈ {0, 1, . . . , |R|}. Ein Hyperknoten R = {r1 , . . . , rl } ⊂ {1, . . . , n} (r1 < r2 < · · · < rl ) wird als Pfad (N0 , N1 , . . . , Nl ) in diesem Baum abgespeichert, wobei i(Nj ) = rj , j = 1, . . . , l, s(Nl ) > 0. Dabei ist s(Nl ) = k, falls R der k-te Hyperknoten ist, der beim Erstellen des Hypergraphen erzeugt wird. Im Allgemeinen ist s(N ) = 0, falls beim Baumknoten N kein Pfad endet und ansonsten > 0. Der Knoten N0 ist die Wurzel des Baums und hat ansonsten keine Bedeutung. Wir wollen dies anhand eines Beispiels klar machen. Wir nehmen an, dass der Hypergraph R die folgenden Hyperknoten enthält: {{2}, {1, 2, 5}, {1, 4}, {1}}. Dann sieht der zugehörige Baum folgendermaßen aus: 3 siehe http://www.upb.de/math/˜agdellnitz/software/gaio.html 10 N0 (1,4) N1 (2,0) N3 (2,1) N2 (4,3) N4 (5,2) N5 Ein Vorteil von dieser Datenstruktur ist, dass die Schnittmenge zweier Hyperknoten nur einmal abgespeichert wird, in obigem Beispiel etwa {1} = {1, 2, 5} ∩ {1, 4}. Da der Baum T nur die Information über die Hyperknoten im Graphen R enthält, muss die Information über die Hyperkanten separat abgespeichert werden. Dazu wird parallel zum Aufbau des Baums die Transitionsmatrix R erstellt, welche diese Information trägt. Die Beschriftungen der Hyperkanten sind letztendlich gar nicht von Interesse und müssen deshalb auch nicht abgespeichert werden. Da die Größe der Matrix R von vornherein noch nicht feststeht und da diese Matrix in der Regel sehr viele Nullen enthält, ist es günstig, nur diejenigen Einträge abzuspeichern, die ungleich Null sind, und zwar als Tripel (i, j, l), wobei i die Zeile, j die Spalte und l den Eintrag bezeichnet. Wir wollen nun nochmals konkret den Algorithmus zur Konstruktion der reduzierten rechtsauflösenden Darstellung beschreiben und dabei näher auf die Details der Implementierung eingehen. (1) Starte mit einem Baum T , der nur aus dem Wurzelknoten N0 besteht. Wähle zufällig eine Zahl k aus der Menge {1, . . . , n} aus (n = |B|) und füge dem Knoten N0 ein Kind N hinzu mit i(N ) = k und s(N ) = 1. (2) Suche in dem bestehenden Baum T nach einem Knoten N mit s(N ) > 0, so dass von dem Hyperknoten Nummer s(N ) keine Hyperkanten ausgehen (d. h. konkret: Überprüfe, ob die Zeile s(N ) in der Matrix R eine Nullzeile ist). Falls kein solcher Knoten N gefunden wurde, gehe zu Schritt 7. (3) Starte eine for-Schleife, welche die Labels des Alphabets L durchläuft (Schleifenzähler: l). (4) Durchlaufe vom Knoten N aus den Baum aufwärts bis zur Wurzel und überprüfe anhand der jeweiligen i-Werte der Knoten, welche Knoten des Graphen G(B, A) von den Knoten des Pfades erreicht werden mittels Kanten, die das Label l tragen (konkret: Durchsuche die i-te Zeile der Matrix B nach Einträgen ungleich Null). Speichere die gefundenen Knoten in einem Array H 0 ab und sortiere sie anschließend in aufsteigender Reihenfolge. Überprüfe, ob der Baum T bereits einen Pfad mit den Knoten in H 0 enthält (Sei N 0 der Endknoten dieses Pfades, falls er existiert). Ist dies LITERATUR 11 der Fall, so erhöhe den Wert in der s(N )-ten Zeile und s(N 0 )-ten Spalte der Matrix R um 1. Andernfalls füge dem Baum T einen neuen Pfad mit den Knoten in H 0 hinzu und setze anschließend den entsprechenden Wert der Matrix R auf 1. (5) Beende die in Schritt 3 initiierte for-Schleife. (6) Kehre zurück zu Schritt 2. (7) Suche in der Matrix R nach der ersten Spalte j, die nur Nullen enthält. Wird keine solche Spalte gefunden, beende die Prozedur, ansonsten entferne die j-te Spalte und die j-te Zeile vollständig. (8) Wurde in Schritt 7 eine Nullspalte gefunden, wiederhole Schritt 7, ansonsten beende die Prozedur. Beachte, dass in den letzten beiden Schritten nur noch Änderungen an der Matrix R vorgenommen werden und nicht am Baum T , d. h die überflüssigen Hyperknoten müssen nicht wirklich entfernt werden, da am Ende nur die Transitionsmatrix R von Interesse ist. Zu weiteren Details der Implementierung, siehe auch [Kaw]. Literatur [Fro] Froyland, G., Junge, O., Ochs, G.: Rigorous computation of topological entropy with respect to a finite partition, Physika D 154, No.1-2, 68-84 (2001) [Lnd] Lind, D., Marcus, B.: An Introduction to Symbolic Dynamics and Coding, Cambridge University Press, Cambridge (1995) [Del] Dellnitz, M., Froyland, G., Junge, O.: The Algorithms Behind GAIO Set Oriented Numerical Methods for Dynamical Systems, In: B. Fiedler (ed.): Ergodic Theory, analysis and efficient simulation of dynamical systems. Springer (2001) [Ras] Rasmussen, M.: Approximation von Attraktoren und Mannigfaltigkeiten nichtautonomer Systeme, Diplomarbeit, Universität Augsburg (2002) [Kaw] Kawan, C.: Numerische Berechnung der topologischen Entropie eines diskreten dynamischen Systems bzgl. einer endlichen Partition, Praktikumsbericht Numerik-Praktikum (2006)