Wikipedia wymienia złożoność czasową dodawania jako , gdzie jest liczbą bitów.n
Czy to sztywna teoretyczna dolna granica? Czy to tylko złożoność obecnie najszybszego znanego algorytmu. Chcę wiedzieć, ponieważ złożoność dodawania podkreśla wszystkie inne operacje arytmetyczne i wszystkie algorytmy, które ich używają.
Czy teoretycznie niemożliwe jest uzyskanie algorytmu dodawania działającego w ? Czy jesteśmy związani liniową złożonością dodawania.
źródło
Aby analiza złożoności miała jakikolwiek sens formalny, musisz określić formalny model obliczeniowy, w którym wykonywany jest algorytm w obiekcie, lub przynajmniej model kosztów , który określa, jakie są podstawowe operacje i ich koszty.
W większości kontekstów przyjmuje się, że operacje arytmetyczne zabierają czasu. Jest to zwykle uzasadnione, ponieważ interesuje nas złożoność algorytmiczna niezależnie od liczby. Nazywa się to modelem kosztów jednolitych .Θ ( 1 )
Jeśli liczby mogą rosnąć bez ograniczeń lub jesteśmy zainteresowani analizowaniem samych operacji, przyjmuje się, że operacje arytmetyczne mają koszt , proporcjonalny do wielkości nakładu.Θ ( | x | )
Czy operacje mogą mieć mniejszy koszt? Być może jednak trzeba formalnie zdefiniować model obliczeniowy, w którym może się to zdarzyć.
źródło
Wyobraź sobie, że Twój algorytm z powodzeniem dodaje 1010100110 i 0010010110 bez odczytu każdego bitu. Aby algorytm mógł dodawać dowolne dane wejściowe, powinienem być w stanie losowo przerzucić dowolny z tych bitów, a algorytm nadal będzie generował poprawne (ale inne) dodanie. Ale jeśli twój algorytm nie odczytuje trochę, to jak mógł stwierdzić, że odwrócone wejście różni się od pierwotnego?
źródło