ghosh – Verbauwhede论文涉及Cryptosys-Tem [47,算法3]的恒定时间硬件实现,以及对基于代码的加密术的Overbeck-Sendrier调查[69,第139-140页]。所有这些来源(以及更多)都描述了Patterson [72,V节]引入的算法,以纠正由无方面的多项式定义的二进制GOPPA代码的T错误。McEliece的纸介绍了Mceliece Cryptosystem [63]也指出了Patterson的算法。但是,帕特森的算法不是最简单的快速二进制二进制解码器。这里的一个问题是,简单性与纠正的错误数量之间存在折衷(这反过来影响了所需的mceliece密钥大小),如以下变体所示:帕特森的论文包含了更简单的算法以纠正⌊t/ 2⌋错误;从苏丹[84]开始,然后是Guruswami – Sudan [50],更复杂的“列表解码”算法,校正略多于T错误。,但让我们专注于快速算法,以纠正传统上使用McEliece Cryptosystem中使用的T错误。主要问题是,在这些算法中,Patterson的算法并不是最简单的。GOPPA已经在GOPPA代码的第一篇论文中指出了[48,第4节],二进制GOPPA代码由平方英尺定义的多项式G也由G 2定义。校正由G 2定义的代码中T错误的问题立即减少到用T错误(即Reed – Solomon解码)的多项式插值问题。生成的二进制二进制解码器比Patterson的解码器更简单。简单性的好处超出了主题的一般可访问性:简单算法的软件倾向于更易于优化,更容易防止定时攻击,并且更易于测试。在伯恩斯坦– Chou-Schwabe [16],Chou [34]和Chen – Chou [32]的最先进的McEliece软件中使用了相同的简单结构并不是一个巧合。该软件消除了与数据有关的时机,同时包括子例程中的许多加速度。避免帕特森的算法也可能有助于正式验证软件正确性,这是当今量词后加密术的主要挑战。也许有一天为Patterson的算法软件赶上了这些其他功能,也许它会带来进一步的加速,或者可能不会。Patterson的算法用于某些计算,使用度t而不是度量2 t,但还包括额外的计算,例如反转模量G;文献尚未明确速度是否大于放缓。,即使帕特森的算法最终更快,肯定会有一些应用程序更重要。只有Patterson的算法才想到Knuth的名言[55,第268页],即“过早优化是所有邪恶的根源”。对于熟悉编码理论的受众来说,“ G 2的GOPPA代码与G 2的GOPPA代码相同;对于更广泛的受众来说,可以通过说“以下关于编码理论的课程”来减少上一句话。,但对于观众来说,将重点放在这种解码器上的小道路上是更有效的,而且文学中似乎没有任何如此的小型言语。总而言之,本文是对由无方面的多项式定义的二进制GOPPA代码的简单t eRROR解码器的一般性介绍,并通过证明了t -reed reed – solomon解码器的证明。
“ C中的算法”指南是一种全包含资源,可为各种算法提供详细的代码。对于需要快速解决编程问题解决方案的个人,本手册是一个有价值的参考点。它从基本的数据结构开始,并详细介绍了高级主题,例如计算几何,图形问题和数学算法。尽管这本书偶尔缺乏严格的分析,但它提供了围绕每种算法功能的明确解释。该指南旨在向读者介绍当今使用的重要计算机算法,同时授予寻求理解它们的个人必不可少的基本技术。它可以用作具有一些编程经验或熟悉计算机系统的学生的教科书,并作为参与开发计算机应用程序的人员的参考。本书包括45个章节,分为八个主要部分:基础,分类,搜索,字符串处理,几何算法,图形算法,数学算法和高级主题。该指南的主要目标是巩固来自不同领域的基本方法,从而为读者提供了可以使用计算机解决的问题的最佳解决方案。一些章节提供了复杂主题的介绍性处理,提供了对算法属性的基本理解,包括优先队列,哈希,单纯形和快速的傅立叶变换。建议读者完全理解所介绍的材料的计算机科学或同等编程经验的一两个先前课程。对C或Pascal等现代编程语言的熟悉是必不可少的,以及对编程系统的基本掌握。这本书假设读者对数学概念有基本知识,但提供了独立的解释来补充其背景中的差距。“ C中的算法”指南为教学目的提供了相当大的灵活性。章节通常可以彼此独立地阅读,从而允许讲师根据其课程要求量身定制材料。,它是学生和专业人士的宝贵资源,这些资源都在寻求有关计算机算法及其应用的全面知识。本书的章节通常会借鉴以前部分的概念。为了根据不同的课程进行定制,可以根据他们的口味和学生的准备,可以选择其45章中的25-30章。文本从有关数据结构和算法的设计/分析的部分开始,该部分是更高级主题的基础。读者可以选择跳过或浏览此介绍性部分。“数据结构和算法”之类的课程可以忽略数学算法,并专注于如何在实现中使用各种结构。“算法的设计和分析”等中级课程可能会强调渐近性能。一些讲师还可以整合补充材料,例如用于“数据结构和算法”课程的基本数据结构,对“算法的设计和分析”的更多数学分析,或用于“软件工具”课程的软件工程技术。本书对所有这些领域都关注,但强调算法本身。它已在全国各地的计算机科学课程中使用,提供了覆盖范围的广度,后来可以在进一步的研究中扩展。有450个练习分为两种类型:大多数测试学生的理解,并要求他们通过示例或应用文本中描述的概念来工作;一些涉及实施算法并进行实证研究以比较它们。本书的重点是实际使用,教授学生可以确保实施和调试有用算法的工具。包括讨论的方法的完整实现以及其操作的描述在一致的示例集上。详细讨论的算法的数字和特征与理论计算机科学和经验结果的联系。相关时提到了实际应用。这本书强调早期学习良好算法,这有助于学生以后应用它们。使用的编程语言是C,可提供Pascal版本。c的可用性和功能被选择,程序可以轻松地翻译成其他语言。必要时讨论语言特征,但不是主要重点。目标是以简单而直接的形式呈现算法,将程序读为周围文本的一部分。这种样式旨在简化实施细节并在整本书中提供一致性。我要对几个为创建本书做出重大贡献的个人和组织表示诚挚的感谢。首先,我承认Sarantos Kapidakis在生产终端纸上提供的宝贵帮助。此外,我想对几位读者的持续问题表示感谢,这促使我继续进行此项目。Addison-Wesley的基思·沃尔曼(Keith Wollman)的支持有助于说服我继续这项工作。戴夫·汉森(Dave Hanson)愿意回答有关ANSI C的问题也非常有帮助。我要感谢Darcy Cotten和Skipplank在制作这本书方面的帮助,以及Steve Beck在印刷软件中识别“最后的错误”。我在算法上的工作受到我在斯坦福大学顾问Don Knuth的教义和著作的极大影响。尽管唐对这项工作没有直接的影响,但他的存在可能是他的存在,这是由于他在建立算法作为科学学科的开创性工作而成为可能的。我非常感谢布朗大学和inria的支持,我在这里做了大部分工作,以及国防分析研究所和施乐帕洛阿尔托研究中心,在访问时我在那里进行了一些其他工作。国家科学基金会和海军研究办公室慷慨地支持了这本书的许多部分的研究。最后,我要感谢Bill Bowen,Aaron Lemonick和Princeton University的Neil Rudenstine在建立学术环境方面的支持,使我能够准备这本书,尽管有许多其他责任。这本书的解决问题的方法是简单而灵活的。他们已经在计算机科学或计算机应用的高级领域参加了专门课程。此外,这本书对于自学或参与开发计算机系统或应用程序程序的人员很有用,因为它包含了各种有用算法的实现和有关其性能特征的详细信息。这本书提供了一个广泛的观点,使其成为该领域的适当介绍。本书的重点在于在计算机科学方面达到最佳性能水平。围绕“软件工具”的课程可能会省略数学和算法方面,而是强调如何将现有实现无缝整合到较大的程序或系统中。另一方面,“算法”课程可能采用调查方法,从多个领域介绍概念。一些讲师可能会选择为所提供的课程补充额外的材料,以适应其特定的教学风格。例如,在有关“数据结构和算法”课程中,可以将额外的重点放在基本数据结构上。对于“算法的设计和分析”,可以进行更多的数学分析;对于“软件工具”,可以更深入地探索软件工程技术。相比之下,本书优先考虑算法本身,同时仍涵盖了设计,分析和实施等各个领域。本书的早期版本已被广泛用于全国各地的大学,通常是计算机科学第二或第三课程或其他课程的补充阅读材料的教科书。我们在普林斯顿大学的经验表明,本书的覆盖范围为学生提供了对计算机科学的极好介绍,后来可以在有关算法,系统编程和理论计算机科学分析的更高级课程中扩展。总共有450次练习,每章之后大约十个练习,通常分为两类。大多数旨在测试学生对文本中涵盖的材料的理解,要求他们通过示例或应用中描述的概念进行工作。一个较小的子集涉及实施和组合算法,甚至可能运行经验研究以比较算法并了解其特性。这本书是针对可实施,运行和调试学生的实用算法的。它提供了讨论方法的完整实现以及对一致示例的程序操作的描述。此外,这本书还包括算法本身创建的数百个数字,对这些插图提供的视觉维度有直观的理解。广泛讨论了算法和潜在应用的特征,并在适当的情况下与理论计算机科学的联系和算法分析得到认可。实施算法时,由于其广泛的可用性和适合我们需求的适用性,我们选择C作为编程语言。尽管其他语言具有其优势和缺点,但C的功能使其成为为此目的的理想选择。程序的设计允许使用相对较少的C结构轻松转换为现代语言。许多程序已根据Pascal和其他语言进行了调整,并努力维持标准的习惯。这本书的主要目标是以最基本的形式介绍算法,优先考虑简单性和直接性。程序并非旨在独立,而是作为周围文本的一部分,从而增强了可读性和理解。这种样式是在内联评论之上选择的,目的是在整本书中保持一致性。结果,类似的程序表现出一致的格式。在我在这本书上的工作中,与国防分析研究所和Xerox Palo Alto研究中心等著名机构的合作在塑造其内容方面发挥了作用。由国家科学基金会和海军研究办公室的慷慨赠款使我的研究成为可能,这对本书的各个部分产生了直接影响。我还要对普林斯顿大学的比尔·鲍恩,亚伦·莱蒙克和尼尔·鲁登斯汀表示感谢,因为他创造了一个学术环境,尽管他们承诺了其他承诺,但我仍可以专注于准备这本书。