W przypadku projektu, nad którym pracuję, powinienem wygenerować losowo rozciągające się drzewa o ograniczonej wysokości.
Zasadniczo wykonuję następujące czynności: 1) Wygeneruj drzewo opinające 2) Sprawdź wykonalność, jeśli to możliwe, zachowaj ją.
1) Zaczynając od minimalnego drzewa opinającego (Prim'a lub Kruskala), dodaję nieistniejącą krawędź i to tworzy cykl, wykrywam ten cykl i usuwam jedną z krawędzi tego cyklu, która daje mi nowe drzewo opinające i kontynuuję to drzewo rozpinające poprzez dodanie nowej krawędzi ...
2) Załóżmy, że istnieje specjalny wierzchołek . Dla każdego wierzchołka, długość ścieżki od do powinno być mniej niż , gdzie jest danym parametrem.
Czy istnieje lepszy (sprytny) sposób na zrobienie tego?
PS Zapomniałem podać inne ograniczenie (mój błąd): stopień wierzchołków również powinien być ograniczony.