Nie ma jednego całkowicie zadowalającego modelu obliczeniowego, w którym ze smutkiem analizowano by algorytmy, nawet w tym, co można by uznać za tradycyjne ustawienie. Zakłada się, że wszystkie dane są łatwo dostępne, a przestrzeń robocza jest skutecznie nieograniczona.
Maszyna Turinga z wieloma taśmami jest z pewnością dobrze teoretycznie sprecyzowana, a wiele algorytmów zaprojektowano i przeanalizowano w tym modelu na przestrzeni lat. Jednak dla niektórych nie jest wystarczająco ściśle związany z tym, jak działają prawdziwe komputery, aby naprawdę był dobrym modelem do zastosowania w XXI wieku. Z drugiej strony model słowo-RAM stał się popularny i wydaje się dokładniej uchwycić pracę współczesnych komputerów (operacje na słowach nie bitów, stały dostęp do lokalizacji pamięci w czasie). Są jednak aspekty, które nie są idealne. Na przykład nie ma jednego słowa modelu pamięci RAM. Trzeba najpierw określić, które operacje na słowach mają być dozwolone w stałym czasie. Jest na to wiele opcji bez jednej akceptowanej odpowiedzi. Druga, rozmiar słowa w jest zwykle zwiększany wraz z rozmiarem wejściowym (co najmniej tak szybkim jak log (n)), aby umożliwić adresowanie dowolnego elementu w pamięci za pomocą stałej liczby słów. Oznacza to, że trzeba sobie wyobrazić nieskończoną klasę maszyn, na których działa twój algorytm, lub nawet gorzej, że maszyna zmienia się, gdy podajesz jej więcej danych. To niepokojąca myśl dla najczystszych przynajmniej wśród moich studentów. Wreszcie, otrzymujesz nieco zaskakujące wyniki dotyczące złożoności dzięki modelowi słowo-RAM, który może nie zgadzać się z tymi, których uczy się jako uczeń. Na przykład, mnożenie dwóch liczb n-bitowych to czas O (n) w tym modelu, a po prostu odczytanie ciągu n-bitowego jest nagle podliniową operacją czasową. Oznacza to, że trzeba sobie wyobrazić nieskończoną klasę maszyn, na których działa twój algorytm, lub nawet gorzej, że maszyna zmienia się, gdy podajesz jej więcej danych. To niepokojąca myśl dla najczystszych przynajmniej wśród moich studentów. Wreszcie, otrzymujesz nieco zaskakujące wyniki dotyczące złożoności dzięki modelowi słowo-RAM, który może nie zgadzać się z tymi, których uczy się jako uczeń. Na przykład, mnożenie dwóch liczb n-bitowych to czas O (n) w tym modelu, a po prostu odczytanie ciągu n-bitowego jest nagle podliniową operacją czasową. Oznacza to, że trzeba sobie wyobrazić nieskończoną klasę maszyn, na których działa twój algorytm, lub nawet gorzej, że maszyna zmienia się, gdy podajesz jej więcej danych. To niepokojąca myśl dla najczystszych przynajmniej wśród moich studentów. Wreszcie, otrzymujesz nieco zaskakujące wyniki dotyczące złożoności dzięki modelowi słowo-RAM, który może nie zgadzać się z tymi, których uczy się jako uczeń. Na przykład, mnożenie dwóch liczb n-bitowych to czas O (n) w tym modelu, a po prostu odczytanie ciągu n-bitowego jest nagle podliniową operacją czasową.
Powiedziawszy to wszystko, jeśli chcesz tylko wiedzieć, czy Twój algorytm będzie działał szybko, najprawdopodobniej zrobi to :-)