Czasami poprawna odpowiedź brzmi: "Ile razy przychodzi to z bazą kodu?" ale w tym przypadku istnieje prawdziwa odpowiedź.
Prawidłowa odpowiedź brzmi "nie", ponieważ nie wszystkie problemy można rozwiązać, stosując idealne przetwarzanie równoległe. Na przykład problem przypominający komiwojażera musi uwzględniać jedną ścieżkę, aby można było rozważyć drugi etap podróży.
Zakładając w pełni połączoną matrycę miast, jeśli chcesz wyświetlić wszystkie możliwe nie-cykliczne trasy dla naszego znużonego sprzedawcy, utknąłeś z problemem O (n!), Który można rozłożyć na O (n) * O ((n-1)!) Problem. Problem polega na tym, że musisz zatwierdzić jedną ścieżkę (po stronie O (n) równania), zanim będziesz mógł rozważyć pozostałe ścieżki (po stronie O ((n-1)!) Równania).
Ponieważ niektóre obliczenia muszą być wykonywane przed innymi obliczeniami, nie ma możliwości równomiernego rozproszenia wyników w jednym przebiegu rozproszonym/zbierania. Oznacza to, że rozwiązanie będzie czekało na wyniki obliczeń, które muszą nastąpić przed rozpoczęciem "następnego" kroku. Jest to kluczowe, ponieważ potrzeba wcześniejszych częściowych rozwiązań zapewnia "wąskie gardło" w zdolności do wykonywania obliczeń.
Ponieważ udowodniliśmy, że możemy sprawić, że wiele z tych nieskończenie szybkich, nieskończenie licznych procesorów czeka (nawet jeśli czekają na siebie), wiemy, że środowisko wykonawcze nie może być O (1), a my potrzebujemy tylko wybrać bardzo duży N, aby zagwarantować "niedopuszczalny" czas pracy.
Tak, jeśli n!
mob
Chcę wiedzieć, gdzie rozmawiałeś. To niesamowite, że mają komputer z nieskończonymi procesorami i pamięcią! –
@Jeff: Tee hee. – Pierreten