Jeśli rozkład stopni podano jako listę stopni, możesz wykonać następujące czynności, podając węzłów o stopniach :nd1,...,dn
Utwórz pełny wykres na usługach. Dla każdego wierzchołka w podziel go na kopie . Podział tutaj oznacza, utwórz liczbę kopii z krawędziami do każdego wierzchołka ma krawędź do, ale bez krawędzi do innych kopii . Jeśli po prostu usuń wierzchołek. Na nowym wykresie wywołaj te wierzchołki dla .KnnviKndivividi=0vij1≤j≤di
Po zakończeniu masz bardzo gęsty wykres na wierzchołkach ; nazwać wykres . Wybierz swój ulubiony algorytm dopasowywania maksymalnej (od wykres jest tak gęsta, powinieneś wykorzystać jeden z algorytmów szybkiego mnożenia macierzy opartych) i uruchomić go na . Będzie to powrót pasujący . Jeśli dopasowanie nie jest idealne (tzn. Jeśli nie obejmuje wszystkich wierzchołków), wówczas twój rozkład stopnia był niemożliwy; więc powrót nie .N=d1+...+dnHHM
Jeśli masz idealne dopasowanie , a następnie usunąć wszystkie krawędzie nie w z , a następnie za każdy scalić dużo wierzchołków w jednym wierzchołkiem . Scalenie dwóch wierzchołków oznacza połączenie ich w jeden, tak że wynikowy wierzchołek ma krawędzie do każdego wierzchołka, do którego przynajmniej jeden oryginał miał krawędź. Wywołaj wynikowy wykres ; ma pożądany rozkład stopni.MMH1≤i≤ndivi1,...,vidiuiG
Wynikowym środowiskiem uruchomieniowym jest gdzie jest stałą dla najszybszego algorytmu mnożenia macierzy (która w momencie pisania wynosi około ). Pod względem liczby wierzchołków na wynikowym wykresie, w najgorszym przypadku gęstego rozkładu stopni mamy .O(Nω)ω2.373O(n2ω)