摘要:
第K短路问题,可以用A*来写,我了个去,遇到了超级令人无语的错误... 如何求第K短呢?有一种简单的方法是广度优先搜索,记录t出队列的次数,当t第k次出队列时,就是第k短路了。但点数过大时,入队列的节点过多,时间和空间复杂度都较高。现在有另一种更加高效的算法A*。介绍一些关键的概念:首先,对于状态空间搜索,是可以提出一个通用的搜索算法框架的,而这个框架中则主要使用了open,和closed两个表。open表,保存了当前待扩展节点,closed表则保存已扩展节点,而BFS DFS也可以纳入这个框架,比如DFS中使用的white black gray染色,实际于 open closed便是对应的。 阅读全文
摘要:
字符串哈希函数。思路:采用ELFhash函数,即(它用于UNIX的“可执行链接格式,ELF”中,这里把它写成C函数),见《算法艺术与信息学奥赛》P96CODE:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<queue>usingnamespacestd;#defineMAXN149993typedefunsignedintUL;intfirst[MAXN],cnt;structnode{chars1[11],s2[11];int 阅读全文
摘要:
图论路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 负边权最短路径 Bellman-Ford Bellman-Ford的Yen-氏优化 差分约束系统 Floyd 广义路径问题 传递闭包 极小极大距离 / 极大极小距离 Euler Path / Tour 圈套圈算法 混合图的 Euler Path / Tour Hamilton Path / Tour 特殊图的Hamilton Path / Tour 构造生成树问题 最小生成树 第k小生成树 最优比率生成树 0/1分数规划 度限制生成树连通性问题 强大的DFS算法 无向图连通性 阅读全文