Pracuję nad zmodyfikowanym algorytmem TopSort i mam problem ze znalezieniem/tworzeniem dużych (ponad 1000 węzłów) skierowanych acyklicznych wykresów do wykorzystania do testowania. Mam nieukierunkowany przykładowy wykres z innego projektu, który ma dobry rozmiar, ale ma wiele cykli. Czy istnieje algorytm, którego można użyć do kierowania krawędziami, aby nie było już cykli?Jak przekształcić niekierowany, bardzo cykliczny wykres w skierowany wykres acykliczny?
Odpowiedz
Szukasz sposobu przekształcenia wykresu w las zrootowanych drzew. wykonać pierwszy lub pierwszy odgłos wykresu każdego komponentu wykresu. Podczas przemierzania ustaw krawędź pośrednią między wierzchołkami nadrzędnymi i podrzędnymi.
this zapewnia sposób, aby uzyskać acykliczne wykresy. Zasadniczo, przejście przez wykres tworzy drzewo, które definiuje częściową kolejność na pierwotnych węzłach. Następnie po prostu kieruj wszystkie krawędzie tak, aby albo były skierowane w spójnym kierunku, zgodnie z kolejnością częściową, albo pomiędzy 2 elementami, które nie są uporządkowane (mogą one wskazywać w dowolnym kierunku).
Nie przeczytałem wszystkiego, ale zgodnie z moim rozumowaniem: sekcja 2.1 niniejszego artykułu opisuje sposób konwersji ukierunkowanego wykresu na DAG (to jest cykle przerwań). Proponuje się dodanie poprzedniego kroku, aby przekonwertować niekierowany na skierowany wykres za pomocą (dowolnego) przejścia przez wykres. –
Aby zapewnić, że nowy kierowany wykres jest podłączony, użyłbym pierwszego wyszukiwania w następujący sposób.
old_undirected graph G
new_directed graph D
dequeue Q
v is any node in G
add v to D
Q.push_back(v)
while(Q is not empty):
v = Q.pop_front()
for all neighbors u to v:
if u in D
add edge u->v to D
else
add u to D and add edge v->u to D
Q.push_back(u)
return D
ten wykres powinien zawierać wszystkie krawędzie oryginalnego wykresu, ale powinien być tak skierowany, aby nie było żadnych okręgów.
- 1. Jak sprawdzić, czy skierowany wykres jest acykliczny?
- 2. Skierowany acykliczny wykres za pomocą d3.js bez DOT
- 3. Jak mogę utworzyć przyrostowy skierowany acykliczny wykres słowo do przechowywania i wyszukiwania ciągów?
- 4. Jak wykryć, czy ukierunkowany wykres jest cykliczny?
- 5. wykres pokazuje bardzo małe ciasto
- 6. Wykres słupkowy CSS - bardzo prosty
- 7. Zwinięty/hierarchiczny I skierowany na siłę wykres w d3.js
- 8. Wykres (wykres) Algorytm
- 9. Google jak Wykres Grafika/Wykres liniowy
- 10. graphviz rysunek wykres pionowo
- 11. Wykres różnicy
- 12. Jak wizualizować wykres neo4j
- 13. Jak zrobić wykres bąbelkowy?
- 14. Jak narysować wykres w PHP?
- 15. jak zaktualizować wykres w androidplot
- 16. Dwustronny wykres w NetworkX
- 17. Wykres interakcji w ggplot2
- 18. Wykres konturowy w pytonie
- 19. Wykres - Kwadrat skierowanego wykresu
- 20. wykres obrazkowy w r
- 21. Wykres w czasie rzeczywistym (przebieg)
- 22. Wykres dynamicznie zmieniający wykres przy użyciu matplotlib w Jupyter Notebook
- 23. Jak przechowywać duży skierowany nieważony wykres z miliardami węzłów i wierzchołków
- 24. Octave, jak zapisać wykres wykresu?
- 25. Jak mogę znormalizować wykres sześcioboków?
- 26. Jak utworzyć "zagnieżdżony" wykres słupkowy?
- 27. Jak uzyskać wykres analizy giełdowej?
- 28. Wykres przepływu aplikacji PHP (lub wykres wywołania funkcji)
- 29. Jak poprawić poszarpany wykres liniowy w ggplot2?
- 30. Wykres typu rozproszonego w Dygraphs?
errm .. on nie próbuje zrobić drzewa. chce kierować każdą krawędzią, aby wynikowy wykres był acykliczny. a proponowana metoda usunie niektóre krawędzie (tworząc drzewo). – lijie