답변:
병리학적인 데이터는 의도 한 계산에 어떤 식 으로든 잘못되게하는 데이터로 간주됩니다. 실제 용도로는 드물게 병리학 이라고 할 수 있으므로 대부분 정상적으로 작동합니다. 이것은 때때로 수학적으로 더 정확 해지지 만 (예를 들어, 확률로), 병적 인 단어를 종종 비공식적으로 사용합니다.
예를 들어, 토마토 샐러드와 케첩은 병리학적인 사람들을 제외하고는 훌륭한 음식으로 토마토에 알레르기가있는 사람들을 의미합니다. 실제로 어떤 경우에는 죽일 수 있습니다. 그러나 토마토에 알레르기가있는 사람들은 매우 드물기 때문에 병리학 적 사례를 제외하고 토마토 요리가 우수하다고 간주됩니다.
병리학 적 데이터는 알고리즘의 성능을 저하시키는 데이터입니다. 해시 테이블의 경우 병리학 데이터는 충돌을 일으키는 데이터입니다. 물론 사용중인 해시 함수에 따라 다릅니다.
예를 들어, 해시 함수가 문자를 함께 추가하는 경우 : hash("abcd") = 'a' + 'b' + 'c' + 'd'
. 그런 다음 병리학 적 데이터는 다음과 같습니다.
{"abcd", "dcba", "cbda", ...}
. 모든 순열은 "abcd"
동일한 위치로 해시되므로 처음에는 피하려고 시도한 연결된 목록으로 끝납니다.
비 병리학 데이터는 병리학이 아닌 데이터입니다.
해시 키는 데이터를 포함하는 별도의 "빈"과 같습니다. 데이터가 모든 빈들 사이에 "균형"으로 고르게 분포 될 것으로 기대 / 희망 할 것이다. 비 병리학 적 데이터의 경우, 각 빈은 대략 동일한 양의 데이터를 갖거나 포함합니다. 데이터가 병리학적인 경우 (wrt 키 해싱 알고리즘), 더 적은 수의 빈으로 "필링"되고 일부 빈은 훨씬 적습니다. 빈을 더 많이 채울 때 조회 시간이 증가하고 (정렬되지 않은 목록을 조회 할 때 효율성이 감소 / 수렴 됨) 비효율적입니다. 키 해싱 알고리즘 만 변경하면 데이터가 "병리학"에서 "비 병리학"으로 또는 그 반대로 변환 될 수 있으므로 해싱 알고리즘의 중요성이 중요합니다.
또한 "병리학 적 대 비 병리학 적"의 구별이 적용될 수있는 많은 다른 알고리즘이 있으며, 기본적으로 "병리학 적"데이터로 인해 알고리즘이 더 나쁜 경우에 수행됩니다 (예 : 개념은 정렬 알고리즘과 함께 사용됨). 통계 개념을 볼 수 있습니다. 또한 동일한 문제의 경우 한 알고리즘에 대해 "병리학 적"인 데이터는 다른 알고리즘에 대해 "병리학 적"이 아닐 수도 있습니다. 기타