“非病理数据”是什么意思?


14

我在Coursera上了算法课。视频中有关哈希表的教授说

事实是,对于非病理数据,您将在正确实现的哈希表中获得恒定时间的操作。

“非病理数据”是什么意思?你能举一些例子吗?

Answers:


15

病理数据应该是使您的预期计算在某种程度上出错的数据。当它在实际使用中很少见时,可以将其称为 病理性的,以便大多数情况下一切正常。有时可以在数学上使之更精确(例如,具有概率),但是病理学一词的使用通常是非正式的。

例如,除了病态的人(对番茄过敏的人)以外,番茄沙拉和番茄酱是极好的食物。在某些情况下,它实际上可以杀死。但是人们对西红柿过敏的情况非常罕见,因此,除病理情况外,西红柿菜肴被认为是极佳的。

Øñ2ØñlgñØñlgñØlgñØñ 用于合并排序。

Øñ2


1
除了排序以外,mergesort 稳定而不是quicksort 稳定也很重要。
wchargin 2014年

11

病理数据是会使算法性能下降的数据。对于哈希表,病理数据是导致冲突的数据。当然,这取决于所使用的哈希函数。

例如,如果您的哈希函数将字符加在一起:hash("abcd") = 'a' + 'b' + 'c' + 'd'。然后病理数据如下:

{"abcd", "dcba", "cbda", ...}。的任何排列都"abcd"将散列到相同的位置,因此您将得到一个链表,该链表最初是要避免的。

非病理数据是非病理数据。


-1

另一种思考方式:哈希键就像包含数据的单独“ bin”。人们会期望/希望数据在所有仓之间平均分配,“平衡”。对于非病理数据,每个单元格具有/包含大致相同数量的数据。如果数据是病态的(Wrt键哈希算法),则它们全部“堆积”在更少的箱中,而某些箱的数目要少得多。这是无效的,因为在将垃圾箱填充得更大时,查找时间会增加(并且效率降低/收敛到查找未排序列表的时间)。请注意,仅更改密钥哈希算法可能会将数据从“病理”变为“非病理”,反之亦然,因此哈希算法的重要性。

也有许多其他算法可以应用“病理性与非病理性”的区别,基本上“病理性”数据使该算法在较差的情况下执行(例如,该概念也与排序算法一起使用)。如您所见,它是一个统计概念。同样对于同一问题,对于一种算法而言,“病理性”的数据对于另一种算法而言可能并非“病理性”。等等

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.