Es gibt sicherlich Möglichkeiten zu zeigen, dass bestimmte Algorithmen eine bestimmte Zeit benötigen oder bestimmte Datenstrukturen eine bestimmte Menge an Platz benötigen. Ein üblicher Weg ist die Verwendung der Informationstheorie.
Ein unsortiertes Array ist eine Permutation des sortierten Arrays. Es gibtmögliche Permutationen. Die Aufgabe des Sortierens im informationstheoretischen Sinne besteht darin, genau herauszufinden, um welche Permutation es sich handelt.n!
Um eine Zahl zwischen und übertragen, müssen Informationsbits übertragen werden. Um eine Permutation von Elementen zu übertragen, ist daherInformationsbits. Nach Stirlings Näherung stellt sich heraus, dass dies Bits .1mlog2mnlog2n!nlog2n+O(low order)
Eine binäre Vergleichsoperation erkennt ein Informationsbit. Daraus folgt, dass jeder Sortieralgorithmus, der nur eine binäre Vergleichsoperation verwendet, mindestens Vergleiche durchführen muss. Wenn wir davon ausgehen, dass ein Vergleich eine konstante Zeit in Anspruch nimmt, bedeutet dies, dass die Sortierung mindestens Zeit in Anspruch nehmen muss .nlog2n+o(nlogn)Ω(nlogn)
Eine Radix-Sortierung könnte dies übertreffen, indem mehr als ein Informationsbit pro Abfrage ermittelt wird.
Ein ähnliches Argument zeigt, dass die binäre Suche optimal ist. Sie versuchen, eine Zahl zwischen und , was bedeutet, dass Informationsbits ermittelt werden. Wenn Ihre Abfrageoperation ein Informationsbit zurückgibt, benötigen Sie mindestens Abfragen, um ein Element zu finden.1nlog2nlog2n
Ähnlich verhält es sich mit der Raumnutzung. Angenommen, Sie müssen eine Permutation im Speicher speichern. Nach einem identischen Argument erfordert dies mindestens Speicherbits. Da Sie Bits benötigen , um eine Ganzzahl zwischen und zu speichern , können Sie im Wesentlichen nichts Besseres tun, als Ganzzahlen zu speichern .nlog2n+o(nlogn)log2n1nn