Was bedeutet "nicht pathologische Daten"?

14

Ich habe einen Algorithmuskurs in Coursera besucht. Der Professor im Video über Hash-Tabellen sagte das

Was stimmt, ist, dass Sie für nicht pathologische Daten konstante Zeitoperationen in einer ordnungsgemäß implementierten Hash-Tabelle erhalten.

Was bedeutet "nicht pathologische Daten"? Können Sie einige Beispiele nennen?

Alexander Myshov
quelle

Antworten:

15

Pathologische Daten sollen Daten sein, die dazu führen, dass für Ihre beabsichtigte Berechnung Fehler auftreten. Es kann als pathologisch bezeichnet werden, wenn es bei tatsächlichen Anwendungen selten genug ist, so dass die Dinge die meiste Zeit in Ordnung sind. Dies kann manchmal mathematisch präzisiert werden (zum Beispiel mit Wahrscheinlichkeiten), aber die Verwendung des Wortes pathologisch ist oft informell.

Zum Beispiel sind Tomatensalat und Ketchup ein ausgezeichnetes Essen, mit Ausnahme von pathologischen Personen, dh Personen, die allergisch gegen Tomaten sind. In manchen Fällen kann es sogar tödlich sein. Aber Menschen, die allergisch auf Tomaten reagieren, sind sehr selten, so dass Tomatengerichte, außer in pathologischen Fällen, als ausgezeichnet gelten.

Ö(n2)Ö(nlgn)Ö(nlgn)Ö(lgn)Ö(n) für die Zusammenführung sortieren.

Ö(n2)

babou
quelle
1
Abgesehen von Sortierungen kann es auch wichtig sein, dass Mergesort stabil ist, Quicksort nicht.
Wchargin
11

Pathologische Daten sind Daten, die die Leistung des Algorithmus beeinträchtigen. Bei Hash-Tabellen sind pathologische Daten Daten, die Kollisionen verursachen. Das hängt natürlich von der verwendeten Hash-Funktion ab.

Zum Beispiel fügt hinzu , wenn Ihre Hash - Funktion die Zeichen zusammen: hash("abcd") = 'a' + 'b' + 'c' + 'd'. Dann sehen pathologische Daten wie folgt aus:

{"abcd", "dcba", "cbda", ...}. Jede Permutation von "abcd"Willens-Hash an dieselbe Position, sodass Sie eine verknüpfte Liste erhalten, die Sie zuallererst vermeiden wollten.

Nicht pathologische Daten sind Daten, die nicht pathologisch sind.

Saadtaame
quelle
-1

Eine andere Art, darüber nachzudenken: Hash-Schlüssel sind wie separate "Bins", die die Daten enthalten. man würde erwarten / hoffen, dass die Daten gleichmäßig auf alle Fächer verteilt sind, "ausgeglichen". für nichtpathologische Daten hat / enthält jeder Behälter ungefähr die gleiche Datenmenge. Wenn die Daten pathologisch sind (Wrt-Key-Hashing-Algorithmus), "häufen" sich alle in weniger Fächern, und einige Fächer haben weit weniger. Dies ist ineffizient, da sich die Nachschlagezeit erhöht (und sich die Effizienz der Suche nach einer nicht sortierten Liste verringert / annähert), wenn die Fächer größer gefüllt werden. Es ist zu beachten, dass durch bloßes Ändern des Schlüssel-Hashing-Algorithmus die Daten von "pathologisch" in "nicht pathologisch" oder umgekehrt umgewandelt werden können, weshalb der Hashing-Algorithmus wichtig ist.

Es gibt auch viele andere Algorithmen, bei denen die Unterscheidung zwischen "pathologisch" und "nicht pathologisch" angewendet werden könnte, wobei die "pathologischen" Daten die Leistung des Algorithmus im schlimmsten Fall beeinträchtigen (z. B. wird das Konzept auch bei Sortieralgorithmen verwendet). Wie Sie sehen können, ist es ein statistisches Konzept. Auch für dasselbe Problem sind Daten, die für einen Algorithmus "pathologisch" sind, für einen anderen Algorithmus möglicherweise nicht "pathologisch". etc.

vzn
quelle