程序设计中的组合数学

作者:吴文虎

定价:19元

印次:1-3

ISBN:9787302108009

出版日期:2005.05.01

印刷日期:2008.07.28

图书责编:栾大成

图书分类:零售

电子书
在线购买
分享
内容简介
作者简介
前言序言
资源下载
查看详情 查看详情 查看详情

本书系统地介绍了与程序设计竞赛有关的组合数学的基本理论和算法设计与分析的常用方法。全书共分8章,分别为:算法基础、组合数学初探、排列与组合、容斥原理、母函数、拟阵、贪心算法和PŽlya定理。本书突出组合数学算法的设计与优化,从而更便于参加程序设计竞赛的读者学习组合数学。 本书可作为ACM/ICPC国际大学生程序设计竞赛和国际信息学奥林匹克竞赛(IOI)的培训教材,也可供从事组合数学与算法研究的人员参考。

组合数学的基本原理是在17世纪到18世纪由Leibniz、Jacob和Euler等数学家建立起来的。早期组合数学的研究来源于概率论中的相关问题。进入20世纪后,组合理论与数学其他分支的联系越来越密切,众多学者将组合学与数学其他分支的有关理论相结合,得到了许多富有意义的结果:1928年,英国数学家Ramsey提出并证明了一个关于集合论的Ramsey定理;1935年Whitney同时推广了图和矩阵的概念,引入了拟阵;1937年,P?lya将群的理论引入组合数学中,给出了一种普遍适用的计数方法--P?lya定理;1964年,Rota把数论中的麦比乌斯函数及反演公式应用于定义在一般偏序集上的二元函数构成的"结合函数"之上,引进了广义麦比乌斯函数及反演公式。如今,组合数学已成为数学中发展最为迅速的分支之一。 本书内容简介 本书的目的是尽可能详细地介绍组合数学中必不可少的核心理论,而对于基础组合学中的许多结论(尤其是与程序设计竞赛关系很小的内容)则被省略了。希望通过这样的处理,使参加程序设计竞赛的读者能够从这些核心理论的学习中掌握组合数学研究问题的方法,而不是单纯地了解理论。 大多数组合数学的书籍将重点放在定理的证明上,而本书则用大量的篇幅介绍如何用组合数学的原理来设计算法,并通过各种方法来不断地优化算法,使其具有较低的时间复杂度和较小的空间开销,同时对于一般的组合数学教材中很少涉及的拟阵理论也给予了介绍。除此之外,还用一定的篇幅介绍与理论计算机科学密切相关的NP-问题,SAT问题等内容。对于部分例题,本书给出了多种求解算法,并对程序在具体运行时所需要的时间加以比较。 本书阅读指南...

目录
荐语
查看详情 查看详情
目    录

第1章  算法基础 1

1.1  算法 1

1.2  时间复杂度与空间复杂度 2

1.3  P类与NP类 9

习题1 14

第2章  组合数学初探 16

2.1  组合数学的起源 16

2.2  组合数学研究的问题 17

习题2 23

第3章  排列与组合 25

3.1  基本概念 25

3.2  分拆与置换的表示 28

3.3  排列与组合的生成算法 31

3.4  购票问题 34

3.5 "方程的解"问题 46

习题3 51

第4章  容斥原理 55

4.1  基本概念 55

4.2 "被毁坏的玉米地"问题 59

习题4 64

第5章  母函数 69

5.1  普通型母函数 70

5.2  指数型母函数 74

5.3  质数分解问题 77

5.4 "红色病毒"问题 79

5.5 "自共轭Ferrers图"问题 82

5.6  常见组合计数方法之比较 89

5.7  NPC问题的代数化 91

习题5 98

第6章  拟阵 101

6.1  基本概念 101

6.2  拟阵的基本性质 104

6.3  拟阵与贪心算法 107

习题6 114

第7章  贪心算法 116

7.1  贪心算法的概念与特点 116

7.2  最佳浏览路线问题 119

7.3  贪心算法与近似计算 122

习题7 126

第8章  Pólya定理 130

8.1  群与置换群 130

8.2  Burnside引理 135

8.3  P?lya定理 139

习题8 141

附录A  阅读本书的预备知识... 查看详情

查看详情