Git Product home page Git Product logo

cplusplus-_implementation_of_introduction_to_algorithms's Introduction

《算法导论》中算法的C++实现

本项目中的所有算法均来自于《算法导论》第三版

另:本人搜集了个人笔记并整理成册,命名为《AI算法工程师手册》,详见:www.huaxiaozhuan.com

缘由

在学习算法导论的过程中,本人经过几次阅读做了两轮笔记之后发现,要想掌握算法的**必须动手实践。

笔记扫描版地址:http://pan.baidu.com/s/1mis5sOK以及http://pan.baidu.com/s/1mhKFxQ4

所有笔记扫描版下载地址:http://pan.baidu.com/s/1boSzlx1

  • 《算法导论》中的算法全部是用伪代码写的,因此大量的语言细节被忽略。比如边界条件的处理
  • 在算法转换为代码过程中会对算法有着更深刻的理解

因此在去年底我在电脑上对算法导论的算法用C++实现了一遍。为了更好地促进学习,现在我将这些代码进行了整理(主要是增加了Doxygen注释,以及利用googletest增加了测试代码)

结构

  • 文件结构
src\
	dynamic_programming_algorithms\: 动态规划算法
			       lcs: 最长公共子序列算法
	google_test\           : gooletest框架的两个文件:gtest.h以及gtest_all.c
	sort_algorithms\       :所有排序算法
			bucket_sort: 桶排序
			count_sort:计数排序
			heap_sort:堆排序
			insert_sort:插入排序
			merge_sort:归并排序
			quick_sort:快速排序
			radix_sort:基数排序
	select_algorithms\     :顺序统计量选择算法
			randomized_select:随机选择的顺序统计量算法
			good_select:最坏情况为O(n)的顺序统计量算法
	tree_algorithms\       :树算法
			binarytree:二叉树
			binarytreenode:二叉树结点
			searchtree:二叉搜索树	
	queue_algorithms\	:队列算法
			min_queue: 最小优先级队列
	set_algorithms\		:集合算法
			disjoint_set: 不相交集合森林
	graph_algorithms\    :图算法
			basic_graph\ :基本图算法
					graph_representation\ :图的表示
								graph_vertex:图的顶点
								graph_edge:图的边
								adjlist_graph:图的邻接表的表示法
								matrix_graph:图的矩阵表示法
								graph: 图
					graph_bfs:图的广度优先搜索算法
					graph_dfs:图的深度优先搜索算法
					topology_sort:有向无环图的拓扑排序算法
					strong_connected_component:有向图的强连通分量算法
					connected_component:无向图的连通分量算法
			minimum_spanning_tree\ :无向图最小生成树算法
					kruskal : 最小生成树的 kruskal 算法
					prim : 最小生成树的 prim 算法
			single_source_shortest_path\: 有向图单源最短路径算法
					bellman_ford :单源最短路径的 bellman_ford算法
					dag_shortest_path:单源最短路径的dag_shortest_path算法
					dijkstra:单源最短路径的dijkstra算法
			all_node_pair_shortest_path\ :有向图所有结点对之间的最短路径算法
					matrix_shortest_path:结点对之间最短路径的矩阵算法和复平方算法
					floyd_warshall:所有结点对之间最短路径的floyd_warshall算法
					johnson:所有结点对之间最短路径的johnson算法
			max_flow\ : 流网络的最大流算法
					ford_fulkerson: 流网络的ford_fulkerson最大流算法
					generic_push_relabel:流网络的“推送-重贴标签”最大流算法
					relabel_to_front:流网络的“前置-重贴标签”最大流算法
			string_matching_algorithms\ :字符串匹配算法
					regular_match :朴素的字符串匹配算法
					rabin_karp_match: rabin_karp字符串匹配算法
					finite_automaton_match:有限自动机字符串匹配算法
					kmp_match:kmp字符串匹配算法
doc\      :由doxygen自动生成的文档
Doxyfile  :doxygen配置文件
Introduction_to_Algorithms.pro :Qt项目配置文件
  • 本项目是利用Qt开发,因此未给出Makefile文件。但是所有的源代码都仅仅使用C++标准库,因此可以跨平台移植。 使用时只需要包含相应的头文件即可
  • 本项目所有算法都是用 C++ Template实现,因此算法的实现都在.h文件中
  • 本项目所有算法都有测试代码。如快速排序在quicksort.h中,快速排序的测试代码在quicksort_test.h中,二者位于同一目录下
  • 本项目所有的命名空间、函数、类以及必要的成员都打上了doxygen注释,可以方便的进行文档化。 如下图所示:

doc文件

目前\doc文件夹中已经有转换过来的html文件,你也可以自己利用doxygen来执行文档转换工作。文档化之后的帮助文档在浏览器中打开如图所示:

doc文件

本文档仅用于个人学习目的,未经许可不得用于商业目的,转载请注明出处

email: [email protected]

cplusplus-_implementation_of_introduction_to_algorithms's People

Contributors

huaxz1986 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cplusplus-_implementation_of_introduction_to_algorithms's Issues

Prim算法复杂度有问题

auto index=min_queue.index_inqueue(another_vertex);
这个index可以在优先队列的每次操作中维护,保存在节点信息里面。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.