Dies ist mein Code:Wie überprüfe ich eine Liste in Haskell?
module Main where
import Data.Graph.Inductive
import Data.Graph.Inductive.Example
func :: Graph gr=> gr a b ->[Node]->Int-> [(Node,Int)]
func graph (x:xs) y
|indeg graph x == 0 = (x,y+1):func (delNode x graph) xs (y+1)
graph2:: Gr Int Int
graph2 = mkGraph (genLNodes 1 14)[(1,2,1),
(1,3,1),
(3,14,1),
(14,6,1),
(14,7,1),
(2,4,1),
(2,5,1),
(4,6,1),
(5,7,1),
(6,8,1),
(7,9,1),
(8,10,1),
(9,11,1),
(10,12,1),
(11,12,1),
(12,13,1),
(14,13,1)]
Graph2 hat 14 Knoten und eg (1,2,1) bedeutet, Kante von Knoten 1 zu Knoten 2 mit einem Gewicht von 1
Func my Graph2 nimmt , topologische Sortierung Vertices und einige Zahl zB 0. Func prüft, ob nach innen gebundene Grad des Knotens gleich 0 ist und erstellt eine Liste von Tupel, wo x ist IdNode und y steigt, wenn Indeg Graph x == 0 ist wahr. Der Scheitelpunkt ist
entfernt und hier ist mein Problem, ich möchte sehen, ob mehr Eckpunkten einen Grad von 0 hat und fügen 1.
EDIT:
Die Funktion wie folgt handeln sollte:
TOPSORT: [1,3,14,2,5,7,9,11,4,6,8,10,12,13]
- check in gebundenen Grad für jeden Knoten in der Liste.
- Wenn der Grad gleich 0 ist, addiere 1 zur Pfadlänge (Knoten 1 ist gleich 0, also Pfadlänge = 1)
- Knoten aus Graph entfernen und eingehend gebundenen Knoten nach dem Entfernen Knoten und Rückkehr zu 2. Schritt
fort Beispiel:
nach 1-Knoten zu entfernen, die Knoten 2 und 3 haben in-bound = 0 so I 1 bis Weglänge hinzuzufügen (path Länge = 2 für den Knoten 2 und 3) und Ich entferne Knoten 2 und 3.
Nun in Grad = 0 haben 14,4,5 so ich füge 1 zu Pfad Leng hinzu th (Pfadlänge = 3) und ich entferne diese Knoten und so weiter
Ich hoffe, dass das Bild des Diagramms hilft.
Es ist nicht klar, was Sie fragen. Mit dem "Überprüfen einer Liste" scheint es sicher nicht viel zu tun zu haben. Bitte beschreiben Sie neu, was Sie versuchen, am besten mit einer Typ-Signatur für die Funktion, die Sie definieren möchten. Außerdem: bitte benutze Markdown richtig: Inline Code Snippets wie '[(1,1)]' sollten in Backticks gehen, so: '' Ich füge 1 ('[(1,1)]') '' hinzu. _And_: versuche, Beispiele minimal zu halten. Diese Grafik von Ihnen ist sicherlich nicht so einfach, wie es sein könnte, für den Zweck dieser Frage. – leftaroundabout