Szukam odniesień do następującego problemu: biorąc pod uwagę liczby całkowite i , wyliczyć wszystkie nieizomorficzne wykresy płaskie na wierzchołkach i szerokości linii . Interesują mnie zarówno wyniki teoretyczne, jak i praktyczne, ale przede wszystkim praktyczne algorytmy, które można kodować i uruchamiać dla możliwie dużych wartości i (pomyśl i ). Jeśli masz już odpowiedź, zignoruj poniższe bzdury.
Poniższe podejście działa całkiem dobrze w przypadku wyliczania wszystkich grafów nieizomorficznych na wierzchołkach i treewidth (tj. Po usunięciu ograniczenia płaskości ):
(a) Zliczyć wszystkie wykresy nieizomorficzne na wierzchołkach i krzyżyku .
(b) Dla każdego wierzchołka na wierzchołków i szerokości wierzchołka , każdej kliki na wierzchołków w i każdego podzbioru krawędzi w , utwórz z , dodając nowy wierzchołek sąsiedztwie . Dodaj do listy grahów na wierzchołkach i treewidth .
(c) Przytnij , usuwając kopie tego samego wykresu.
Kuszącym sposobem na rozszerzenie tego zakresu na wyliczanie płaskich wykresów treewidth jest po prostu filtrowanie wykresów niepłaskich przy każdej iteracji. Niestety nie generuje to wszystkich płaskich wykresów treewidth (na przykład, ponieważ wylicza tylko wykresy zdegenerowane).
Oczywiście moglibyśmy wyliczyć wszystkie wykresy na wierzchołkach i krzywe a dopiero potem odfiltrować te niepłaskie, ale to nie wykorzystuje tego, że większość wykresów jest niepłaskich i wydaje się bardzo nieoptymalna.
Odpowiedzi:
Istnieje ładne oprogramowanie, które generuje małe płaskie wykresy w odniesieniu do izomorfizmu, które mogą pomóc. Jak widzę, jednym z problemów było wygenerowanie nieizomorficznych wykresów płaskich, a większość tych płaskich wykresów (na mniej niż 15 wierzchołkach) ma małą szerokość.
Do sprawdzania, czy ich szerokość jest mniejsza niż podana wartośćk , jednym ze sposobów jest użycie algorytmów heurystycznych w celu przyspieszenia tego obliczenia, na wypadek, gdyby dokładne algorytmy nie były praktyczne. np. na wykresie planarnymsol najpierw możemy znaleźć średnicę sol i odpowiednią ścieżkę P. długości re (która jest średnicą). Następnie znajdź wierzchołekv ∈ P który ma najkrótszą najdłuższą odległość (l ) do dowolnego innego wierzchołka u ∈ G ∖ P wśród wszystkich wierzchołków w ∈ P . Szerokośćsol jest co najwyżej re+ l , jeśli jest mniejszy niż k skończymy w przeciwnym razie albo zastosujemy inne algorytmy heurystyczne, albo uruchomimy dokładny algorytm.
W przypadku mniej niż 3 połączonych wykresów można również zastosować heurystykę, znajdując wycięte wierzchołki, a następnie naprawiając te wierzchołki i znajdując szerokość drzewa pozostałego wykresu. Ale ponieważ liczba węzłów jest niewielka (15 ), jeśli wykres to 4 - połączona wtedy średnica nie jest duża i myślę, że pierwsza heurystyka powinna tam działać. (Nie wiem, czy istnieje jakikolwiek 5 połączony wykres płaski na co najwyżej 15 wierzchołkach, ale jak wiemy, nie mat połączony wykres planarny dla t > 5 )
Jako wielkość największej przeszkody dla szerokości drzewak nie jest znane, nie możemy po prostu odgadnąć górnej granicy wartości szerokości danego wykresu sol . Wydaje się jednak, że przynajmniej dla grafów płaskich nie powinno być tak duże (należy to udowodnić).
źródło
Można wyliczyć wszystkie paryG , B gdzie sol to wykres płaski z co najwyżej szerokością k , b to torba wielkości k tak, że istnieje rozkład drzewa sol z b jako torba.
Teraz dla każdej paryG , B gdzie sol ma n - 1 wierzchołki budujemy nowy wykres sol′ dla każdego podzbioru S. z b przez dodanie wierzchołka v z S. jako sąsiedzi i niech b′ być wielkością k podzbiór B ∪ v . Dodajsol′,b′ gdyby sol′ jest płaski i nie jest izomorficzny w stosunku do żadnej już znalezionej pary.
Łatwa górna granica liczby wpisów, które należy przechowywać(nk) razy liczba wyliczonych wykresów, ale jest to pesymistyczne ograniczenie. W przypadku większości wykresów szerokości k większość podzbiorów rozmiaru k nie może wykonać torby, np. Ak × n siatka ma tylko n ⋅3)k - 1 możliwe torby.
Wierzę, że zadziała to tak samo jak algorytm dla wykresów niepłaskich, ponieważ dla każdej pary G, B otrzymujemy wykres, czyniąc B kliką, większość tych wykresów będzie nieizomorficzna.
Jest kilka sztuczek, które można zastosować, aby to przyspieszyć, sugeruję zajrzeć do: http://www.siam.org/meetings/alenex04/abstacts/HBodlaender.pdf
źródło