Hu-Tucker算法介绍:
Hu-Tucker 算法有助于压缩某些块的顺序,假设您对以下内容有一定的自然顺序,那么如果将字符串和音符考虑在内,那么将它们考虑在内,它们将按数字排序。
现在的问题是我们如何构建顺序以便压缩完美匹配,并且仍然提供相同的代码而不改变字符串的性质,即它们的顺序。
例如——“ Geeks for Geeks ”仍然是“Geeks for Geeks ”而不是“ for Geeks Geeks ”。
因此,我们在压缩事物时也需要保留顺序,因此将字符串排序为数字是要走的路。
好吧,为了解决所有这些问题,我们有一个名为 Hu-Tuker 的简单算法,即使它已经很老了,它也有助于获得准确的结果。
了解胡塔克:
该算法分为 3 个不同的阶段,然后交替评估每种方法的时间复杂度。之后,进行试验,然后证明对复杂性收取的金额是合理的。在所有 3 个阶段中,有 2 个独立的方法,分别采用 O(n 2 ) 和 O(nlogn) 复杂度。
因此,分界属性或区分线,正如一些人所说,将是从它们衍生出来的抽象关系。
然后,在编号之后,解码和编码过程由算法本身负责,就在键入值之后!
The Hu–Tucker Code is the alphabetical search tree’s binary code.
让我们看一棵树来更好地学习它:
如上图,第1 步,我们从树中看到,某些字符串(归类为 Beta)存储某些固定长度的值,这是我们在上面提到的。现在,在加班运行这些转换之后,它们对算法来说变得很弱,因此最终会被压缩。此外,当我们添加数字时,我们可以放心,订单将是完美的!
之后是pass 2,把最常出现的字符进行相应的分组,然后压缩再解压,这样占用的存储空间就少了,因为现在出现频率最高的字符已经分组了!
虽然这个算法已经很老了,但据说压缩的经典本质就是由此而来。此外,与其他方法相比,使用此方法仍有某些优势,因为此方法中的延迟和压缩下降确实更少。我们现在将看到 Hu-Tucker 算法的一个简短明了的例子,以更好地理解使用某些节点和字母符号的学习曲线。
实现 Hu Tucker 的算法如下:
1. 'terminal' label node 0, ... n-1
2. Repeat repetitions (n - 1):
(a) find a pair I j) to be I I < j;
(ii) node I or j is not labelled "none" and
(iii) no node (i+1, etc.)
(iv) weight[i] + weight[j] is minimal,
(v) I is not unique after (iv) and (v)
3. j is minimal if not unique following the selection process.
(a) Mix node j and
(b)save node j as new node I
(c) Weight[i]+= Weight[j] Weight[i] Weight
(d) Node I 'interior'
(e) Node I 'not' Label node
Hu-Tucker 的应用:
让我们看一下 Hu Tucker 算法的 2 个应用,以便更好地理解。
- 实施搜索:
由于 Hu Tucker 是一种压缩和模式查找算法,它可以用于在数据库中搜索模式,因为它使用树结构,并且所有搜索技术都尽可能广泛地使用二分搜索。
例子:
让我们将树的边数表示为“i”,它是另一组元素的子集,使得 i ∈ {1, 2, … . . , n},然后使用 Hu-Tucker 算法,我们可以在给定的集合中找到权重,并可以产生搜索结果。 - 最小化成本函数:
从上面开始,Hu-Tucker 算法也是一种压缩技术,因此有助于找出最小成本函数计算。
用于最小化的公式是:
La(w,l) , loga∑
Xn
i=1
w(i)a
l(i)
Hu-Tucker 的缺点:
尽管 Hu-Tucker 算法是一种简洁而深刻的算法,但与所有其他算法一样,它也有缺点和失败的地方。该算法有些奇怪,因为它依赖于许多有时不提供的其他信息。与上面的应用程序 2一样,对数函数需要太多的数据,这通常不是现代压缩算法的要求。此外,由于该算法已经过时,与此相比,较新的算法具有更好且更小的时间复杂度, 因此感觉有点过时和不如他们!
结论 :
这完全是关于 Hu-Tuckker 算法的简短介绍。希望这篇文章能帮助您掌握它的简要介绍,并帮助您铺平前进的道路!
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。