![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
人工智能:一种现代的方法 (学习笔记)
学习笔记, 书内部分算法实现
Spikeeee-
消磨到死的那些希望的亡灵:苍白、凄惨、哭的哀伤。
展开
-
4.5 联机局部搜索(LRTA*(learn real time A*) - agent) --- 实现代码附详细注释
是不是英美思维逻辑习惯从后往前啊还是按着自己的理解重新写了一下很简单的算法 但是很有效局部对单一状态判别, 不断更新H(s):从s到达目标的估计代价,且将每走一步的权值加入了计算,而不仅仅只是启发函数,这样使得看起来最优的方案,如果其是错误的,到达目标的预估代价会越变越大import mathdirections4 = {'N': (-1, 0), 'E': (0, 1), 'S': (1, 0), 'W': (0, -1)}# directions8 = dict(directions4原创 2021-04-20 14:50:35 · 921 阅读 · 1 评论 -
4.5 联机搜索(online-dfs-agent) --- 实现代码附详细注释
蛮简单的算法,但因为对python不太熟悉,实现过程不是一般的痛苦…联机dfs传统dfs的区别只是要维护一个回溯序列和一个解序列启发式函数使用的是与目标的曼哈顿距离,在一些极限条件下,因为每次只能感知一步,所以效果并不好,但总体情况下还是具有一定优化能力整体流程见书中描述:Python代码:import mathdirections4 = {'W': (-1, 0), 'N': (0, 1), 'E': (1, 0), 'S': (0, -1)}directions8 = dict(dir原创 2021-04-17 15:09:44 · 788 阅读 · 2 评论 -
4.3 与或搜索树(and-or-search) --- 实现代码附详细注释(待完善)
书上好像使用的状态的映射写的, 这样在List上更加直观但是感觉普适性较低,所以本人用多个参量记录状态但是在输出表结构上出现了问题主要的点是不太明白为什么在循环中遇到了一个出现过的节点便直接退出,那不会忽略它后继节点的状态嘛?并且由于刚上手Python几日, 对List还是不太熟, 所以对输出有点困难,基本程序结构是正确的, 可以调试来进行阅读与或搜索树只适用于连续空间离散化的一个时间片进行处理,从而得到一个解序列的算法目的是通过该解序列,计算启发式函数,得出启发值,整体可以通过每个时间片得出的原创 2021-04-15 22:57:56 · 1384 阅读 · 2 评论 -
4.1 八皇后问题 - 遗传算法(genetic-algorithm) --- 实现代码附详细注释
久闻遗传算法大名,算法实现的好有趣书上讲解十分详细且精简,所以不进行赘述了,建议直接看书上介绍遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。而只要简单的“否定”一些表现不好的个体就行了。C++实现代码:#include <iostream>#include <time.h>#include <stdlib.h>#include <algorithm>#include <cm原创 2021-04-14 16:29:28 · 345 阅读 · 0 评论 -
4.1 八皇后问题 - 传统dfs,爬山法,首选爬山法,模拟退火 --- 实现代码附详细注释
传统解法 - 广度优先搜索(DFS):#include <iostream>#include <cstdio>using namespace std;#define ll long longconst int maxn = 200005;const int INF = 0x3f3f3f;int n,a[50],ans = 0;bool vis[3][50];int cnt = 0;void dfs(int i) { ++cnt; if(i ==原创 2021-04-13 23:55:51 · 773 阅读 · 0 评论 -
3.6 八数码问题 - 启发式搜索(A* Search) --- 实现代码附详细注释
参考博客:https://blog.csdn.net/qq_32400847/article/details/51816685#include<cmath> #include<queue> #include<cstdio> #include<cstring> #include<iostream>#include<algorithm> using namespace std; int Hash[15]原创 2021-04-12 17:14:48 · 262 阅读 · 0 评论 -
3.4.5 迭代加深的深度优先搜索(iterative-deepening search) --- 实现代码附详细注释
用链式前向星或者邻接表存图会更加方便的 懒得改了就这样吧 注释之后有时间补上因为dfs是相同代价搜索 所以路径代价没有用处import pandas as pdimport sysfrom pandas import Series, DataFrame # 城市信息:city1 city2 path_cost_city_info = None # 按照路径消耗进行排序的FIFO,低路径消耗在前面# 优先队列_frontier_priority = [] # 节点数据结构...原创 2021-04-07 15:23:51 · 2466 阅读 · 1 评论 -
3.4.2 一致代价搜索 (uniform-cost search) --- 实现代码附详细注释
import pandas as pdfrom pandas import Series, DataFrame # 城市信息:city1 city2 path_cost_city_info = None # 按照路径消耗进行排序的FIFO,低路径消耗在前面# 优先队列_frontier_priority = [] # 节点数据结构class Node: def __init__(self, state, parent, action, path_cost): ...原创 2021-04-03 18:26:09 · 1960 阅读 · 1 评论