Pytanie wydaje się być trochę zagmatwane.
Chcę zmniejszyć bezwzględny czas wykonania.
Masz na myśli upływ czasu? Z pewnością użycie odpowiedniej struktury danych poprawi przepustowość, ale dla danej struktury danych minimalna kolejność algorytmu jest absolutna i nie ma nic wspólnego z tym, jak zaimplementować algorytm.
Który wzór istnieje, aby zrealizować ...?
Wzorce projektowe są czymś, co jest kod , nie szablon do pisania programów, a także użyteczne narzędzia do projektowania programów nauczania. Aby zacząć od wzoru i sprawić, by kod się zmieścił, jest on sam anty-wzorem.
Nikt nie może odpowiedzieć na to pytanie, nie wiedząc o wiele więcej na temat swoich danych i ich struktury, jednak kluczowym czynnikiem wydajności będzie struktura danych, której używasz do implementacji drzewa. Jeśli czas, który upłynął jest ważny, to spójrz na wykonanie równoległe, ale warto również rozważyć wykonanie operacji w innym narzędziu - bazy danych są zoptymalizowane pod kątem obsługi dużych zbiorów danych, jednak należy pamiętać, że oczywistą metodą opisu drzewa jest relacyjna baza danych jest bardzo nieefektywna, jeśli chodzi o izolowanie pod-drzew i chodzenie po drzewie.
W odpowiedzi na Adama sugerując rozwidlenia Ci odpowiedzieli:
I „słyszał”, który PCNTL isnt dobre rozwiązanie. Jakieś doświadczenia?
Gdzie to usłyszałeś? Z pewnością rozwidlenie ze skryptu wywoływanego przez CGI lub mod_php jest złym pomysłem, ale nic złego w robieniu tego z linii poleceń. Czy masz google do długich procesów PHP (bądź ostrzeżony, że istnieje wiele złych informacji tam). Kod, który napiszesz, będzie różnił się w zależności od systemu operacyjnego - czego nie napisałeś.
Podejrzewam, że można rozwiązać dużą część problemów z wydajnością, określając, które części drzewa należy sprawdzić i tylko sprawdzając te części ORAZ uruchamiając sprawdzenia podczas aktualizacji drzewa lub co najmniej zaznaczając węzły jako 'brudny'.
Można je znaleźć pomocne:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ http://en.wikipedia.org/wiki/Threaded_binary_tree
C.
... napisać rozszerzenie C? – jldupont