Frage

Ich versuche, die Lösung für dieses Problem zu finden: Wie findest du alle Ganzzahlen in einem sortierten Array von Size n, das n / k-mal in weniger als o (kLogn) -Zeit wirkt?

Ich konnte nur diese -Frage, wobei O (KLONN) -Lösung bereitgestellt wurde.

War es hilfreich?

Lösung

Beginnen wir mit dem Fall $ k= 2 $ , und nehmen Sie an, dass der Algorithmus vergleichbar ist.

Ich behaupte, dass jeder Algorithmus, der sogar ein einzelnes Element findet, das $ n / 2 $ Times erscheint, einen Index $ kennen I $ so, dass $ A [i + 1]= a [i + n / 2] $ . Nehmen an, dass dies nicht der Fall ist, und lassen Sie uns die Einfachheit halber annehmen, dass die Einträge von $ A $ reelle Zahlen sind. Lassen Sie uns sagen, dass der Algorithmus die folgenden Werte bekannte: $$ A [i_1]=cdoten= a [j_1] Es ist übereinstimmend mit dem Wissen des Algorithmus, dass $ A [I_1-1] usw. und so weiter und mit ein wenig Anstrengungen, die wir arrangieren können, dass es kein Element gibt, das kein Element auftritt $ n / 2 $ Times.

Erwägen Sie jetzt den $ n / 2 + 1 $ Arrays des folgenden Formulars: Es gibt einen Lauf von $ n / 2 $ Viele $ 0 $ S Beginnen Sie an einiger Position $ J \ in \ {1, \ ldots, N / 2 + 1 \} $ , und der Rest der Elemente ist einzigartig. In jedem solchen Array gibt es eine einmalige Wahl für den Index $ i $ oben erwähnt. Somit hat der Entscheidungsbaum, der den Algorithmus darstellt, mindestens $ n / 2 + 1 $ Blätter, und daher muss es Tiefe $ haben \ Omega (\ log n) $ .


Im Allgemeinen Fall sollte der Algorithmus einen Index $ I $ wissen, so dass $ A [I + 1]= A [i + n / k] $ für jedes Element, das ausgegeben wird. Wir können das Array in $ K / 2 $ Teile der Größe $ 2N / K $ und berücksichtigen $ (n / k + 1) ^ k $ Beispiele wie zuvor, wo der $ R $ tiges Element Erscheint $ n / k $ Die Zeiten befinden sich in der $ R $ th. Dies gibt eine untere Grenze von $ \ omega (k \ log (n / k)) $ , und passend zur oberen Grenze für fast alle Werte von $ K $ .

(die Algorithmen können wahrscheinlich verbessert werden, um eine passende obere Grenze zu ergeben.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top