Hash在信息学竞赛中的一类应用-Read.DOCVIP

  • 3
  • 0
  • 约9.17千字
  • 约 12页
  • 2018-08-28 发布于天津
  • 举报
Hash在信息学竞赛中的一类应用-Read

Hash在信息学竞赛中的一类应用 【正文】 Hash表作为一种高效的数据结构,有着广泛的应用。如果Hash函数设计合理,理想情况下每次查询的时间花费仅仅为O(h/r),即和Hash表容量与剩余容量的比值成正比。只要Hash表容量达到实际使用量的大约1.5倍以上,查询花费的时间基本就可以认为恒为O(1)。 对于一个Hash表,一个好的Hash函数是尤其重要的,因为它能使Hash表保证效率。一个好的Hash函数最显而易见的特征是,能使不相同的东西经过Hash之后只有很小的几率相同。这样能避免过多冲突的产生。 Hash表离不开Hash函数,但是反过来呢?有的时候,Hash函数却是可以离开Hash表的。一个常见的例子就是著名的MD5算法,它是一个Hash函数,但是它的用途往往是对信息进行加密,以验证信息的正确性。换句话说,我们事实上是通过直接比较MD5算出的结果是否相同以推断原文内容是否一致。除了MD5,常用的CRC32校验码和SHA-1算法也是基于类似的想法而产生的。 那么,信息学竞赛中,这样的算法有没有用武之地呢? 本文要讨论的,就是这一类以判重或判等价为目标的Hash函数。让我们来看看例题1。 例题1 多维匹配 题目大意 在一个串中求另一个串第一次出现的位置,很简单,KMP即可。扩展到二维情况,就是求在一个矩阵中求另一个矩阵第一次出现的位置。而如果扩展到k维的情况,又该怎么做呢?待匹

文档评论(0)

1亿VIP精品文档

相关文档