Предполагается, что патологические данные - это данные, которые каким-то образом приводят к ошибкам для ваших предполагаемых вычислений. Его можно назвать
патологическим, когда он достаточно редок в реальных условиях, так что в большинстве случаев все работает нормально. Иногда это можно сделать математически более точным (например, с вероятностями), но использование слова патологическое часто неформально.
Например, томатный салат и кетчуп - отличная еда, за исключением патологических людей, то есть тех, у кого аллергия на помидоры. Это может на самом деле убить в некоторых случаях. Но люди, страдающие аллергией на помидоры, очень редки, поэтому томатные блюда считаются отличными, за исключением патологических случаев.
O ( n2)O ( n lgн )O ( n lgн )O ( LGн )O ( n ) для сортировки слиянием.
O ( n2)
Патологические данные - это данные, которые заставят алгоритм работать плохо. Для хеш-таблиц патологические данные - это данные, которые вызывают коллизии. Это, конечно, зависит от используемой хеш-функции.
Например, если ваш хэш - функция добавляет символы вместе:
hash("abcd") = 'a' + 'b' + 'c' + 'd'
. Тогда патологические данные выглядят так:{"abcd", "dcba", "cbda", ...}
, Любая перестановка"abcd"
хэша в одну и ту же позицию приводит к тому, что в итоге вы получите связанный список, который вы в первую очередь пытались избежать.Непатологические данные - это данные, которые не являются патологическими.
источник
Еще один способ думать об этом: хэш-ключи похожи на отдельные «корзины», которые содержат данные. можно было бы ожидать / надеяться, что данные равномерно распределены между всеми бункерами, «сбалансированными». для непатологических данных каждый бин имеет / содержит примерно одинаковое количество данных. если данные являются патологическими (алгоритм хеширования ключа), все они «накапливаются» в меньшем количестве элементов, а в некоторых - гораздо меньше. это неэффективно, потому что время поиска увеличивается (и эффективность уменьшается / сходится к эффективности поиска несортированного списка), когда ячейки заполнены больше. обратите внимание, что простое изменение алгоритма хеширования ключа может превратить данные из «патологического» в «непатологический» или наоборот, отсюда важность алгоритма хеширования.
также есть много других алгоритмов, для которых может применяться различие «патологический и непатологический», причем в основном «патологические» данные заставляют алгоритм работать в худшем случае (например, концепция также используется с алгоритмами сортировки). как вы можете видеть это статистическая концепция. также для той же проблемы данные, которые являются «патологическими» для одного алгоритма, могут не быть «патологическими» для другого. и т.п.
источник