摘要:http://blog.csdn.net/mwsong/article/details/1766382 到现在为止,我们已经对Prolog有了一个基本的了解,现在有必要对我们所学过的知识做一个系统的总结。 Prolog的程序是由一系列的事实和规则组成的数据库。 规则之间的调用是通过联合操作完成的,P
阅读全文
摘要:规则 规则由几个互相依赖的简单句(谓词)组成。用来描述事实之间的依赖关系,如:因果关系,蕴含关系,对应关系 规则的实质就是存储起来得查询 其语法结构如下: head:-body head 为谓词的定义部分,和事实一样,也包括谓词名和参数说明 :- 连接符 表示 蕴含 body 一个或多个目标,用“,
阅读全文
摘要:内部谓词 和其他语言一样,prolog也提供一些基本的输入输出函数。 内部谓词是指已经在prolog中事先定义好的谓词,在内存中的动态数据库中是没有内部谓词子句的。(当我们运行某个.pl 文件的时候,该文件的内容会加载到内存中。所以内存中会有文件中的谓词子句),当解释器遇到内部谓词的目标,它就直接调
阅读全文
摘要:混合查询 我们可以把简单的查询连接起来,组成复杂的查询。 ?- location(X,kitchen),edible(X). 简单查询只有一个目标,而混合查询可以把这些目标连接起来。从而进行较为复杂的查询。 , 合取 且 的意思。 该查询意思为:寻找满足条件的X,条件是:X位于kitchen中,且可
阅读全文
摘要:localtion() 和 door() 中的变量是区分顺序的,如: ?-location(desk,office). true ?-location(office,desk). false ?-door('dining room',kitchen). true ?-door(kitchen,'di
阅读全文
摘要:一般来说,人工智能语言应具备如下特点: 1、具有符号处理能力(即非数值处理能力); 2、适合于结构化程序设计,编程容易; 3、 具有递归功能和回溯功能; 4、 具有人机交互能力; 5、 适合于推理; 6、既有把过程与说明式数据结构混合起来的能力,又有辨别数据、确定控制的模式匹配机制。 人工智能语言解
阅读全文
摘要:1、问题描述: 实现定位<h2>品牌</h2>节点 brand_tag = sel.xpath("//h2[text()= '品牌']") 报错:ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL byt
阅读全文
摘要:Python字符串的encode与decode研究心得乱码问题解决方法 Python字符串的encode与decode研究心得乱码问题解决方法 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式? 为什么Python
阅读全文
摘要:创建如下二叉树: #coding:utf-8 class Node(object): '''构造节点''' def __init__(self,data=None,lchild=None,rchild=None): self.data = data self.lchild = lchild self
阅读全文
摘要:二分查找 二分查找是对一组有序序列进行查找。根据要查找的k和序列中间元素比较,动态的移动查找范围。以对折的方式缩小查找范围。 递归方式: 非递归方式:
阅读全文
摘要:归并排序 归并排序说的简单一点就是把一个大的序列分成多个子序列,再别对各个子序列进行排序,等所有子序列都排序完成之后,再逐步从所有的子序列里面抽出最小的元素放回到大序列里面。直至所有元素都放回大序列,从而完成排序。 是采用分治法的典型案例。 本例是 二路归并。 一个大的序列 分成两个子序列分别进行排
阅读全文
摘要:堆排序 在堆排序中,我们可以将顺序表看成一颗完全的二叉树 二叉树知识回顾: 从1开始对二叉树中的每个节点顺序编号 序列 : [ # , C, H, G, E, A, D, I, F, B, K ] 索引 1 2 3 4 5 6 7 8 9 10 所以编号为 i 的 左孩子节点编号为 2*i ; 右孩
阅读全文
摘要:选择排序 每一趟从待排序的元素中,选出最小的元素,放到已经排好序的序列的后面直到全部元素排序完毕。在这个过程中,有序区逐步扩大,而无序区逐渐缩小。 直接选择排序 直接选择排序是将无序区内的最小元素追加到有序区的后面,从而扩大有序区的范围。而我们又是在原地排序,所有也就相当与交换无序区的第一个元素和无
阅读全文
摘要:快速排序 快速排序是在等待排序的n个记录中随机取出一个元素作为基准,比基准小的元素放到基准左边,比基准大的放到基准的右边。 然后分别对基准两边的子序列进行上一步的操作。递归的进行,直到排序完成。 可以设置两个游标分别对序列左右两端的元素进行跟踪。以方便和基准比较大小进行移动。 如图所示,low 和
阅读全文
摘要:冒泡排序 冒泡排序是通过无序区相邻两个元素之间进行比较和位置交换,达到排序的目的。 插入排序是设定序列的 1 到 n-1 元素为无序区,初始有序区就只有 0 这个元素,然后将无序区中的元素和有序区中的元素逐个进行比较插入。从而是不断扩大有序区的范围。减少无序区的范围直至排序完成。 而冒泡排序则视整个
阅读全文
摘要:希尔排序 希尔排序也是插入排序的一种。又名缩小增量排序。它是对直接插入排序的一种改进。 直接插入排序是每次都和前面一个元素进行比较。其步长为 1。 希尔排序则不然,它得步长是动态变化的,或者说是由大到小变化的。希尔排序根据步长将整个序列分成n组。然后在各个子组内部分别进行元素的排序。接着缩小步长,相
阅读全文