展会信息港展会大全

【转帖】人工智能语言
来源:互联网   发布日期:2011-09-19 11:52:15   浏览:6345次  

导读:研学论坛 一、什么是人工智能语言人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写...

一、什么是人工智能语言
人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写程序求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。
典型的人工智能语言主要有LISP、Prolog、Smaltalk、C++等。
一般来说,人工智能语言应具备如下特点:
•具有符号处理能力(即非数值处理能力);
•适合于结构化程序设计,编程容易;
•具有递归功能和回溯功能;
•具有人机交互能力;
•适合于推理;
•既有把过程与说明式数据结构混合起来的能力,又有辨别数据、确定控制的模式匹配机制。
人们可能会问,用人工智能语言解决问题与传统的方法有什么区别呢?
传统方法通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。
对于人工智能技术要解决的问题,往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库(包含事实和推理规则),程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些条件和目标不大明确或不完备,(即不能很好地形式化,不好描述)的非结构化问题比传统方法好,它通常采用启发式、试探法策略来解决问题。
二、Prolog语言及其基本结构
Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。
尽管Prolog语言有许多版本,但它们的核心部分都是一样的。Prolog的基本语句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,文法简捷,清晰易懂。另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。
1、事实
事实用来说明一个问题中已知的对象和它们之间的关系。在Prolog程序中,事实由谓词名及用括号括起来的一个或几个对象组成。谓词和对象可由用户自己定义。
例如,谓词likes(bill,book).
是一个名为like的关系,表示对象bill和book之间有喜欢的关系。
2、规则
规则由几个互相有依赖性的简单句(谓词)组成,用来描述事实之间的依赖关系。从形式上看,规则由左边表示结论的后件谓词和右边表示条件的前提谓词组成。
例如,规则 bird(X):-animal(X),has(X,feather).
表示凡是动物并且有羽毛,那么它就是鸟。
3、目标(问题)
把事实和规则写进Prolog程序中后,就可以向Prolog询问有关问题的答案,询问的问题就是程序运行的目标。目标的结构与事实或规则相同,可以是一个简单的谓词,也可以是多个谓词的组合。目标分内、外两种,内部目标写在程序中,外部目标在程序运行时由用户手工键入。
例如问题 ?-student(john).
表示“john是学生吗?”

三.Prolog程序的简单例子
以下两个例子在Turbo Prolog 2.0环境下运行通过。
[ 注:一个Turbo Prolog程序至少包括谓词段、子句段和目标段三项。目标可以包含在程序中,也可以在程序运行时给出。]

例1  谁是john的朋友?
predicates                       /*谓词段,对要用的谓词名和参数进行说明*/
  likes(symbol, symbol)
  friend(symbol, symbol)
clauses                         /*子句段,存放所有的事实和规则*/
  likes(bell,sports).                               /*前4行是事实*/
  likes(mary,music).
  likes(mary,sports).
  likes(jane,smith).
  friend(john,X):-likes(X,sports),likes(X,music).        /*本行是规则*/
当上述事实与规则输入计算机后,运行该程序,用户就可以进行询问,如输入目标:
friend(john,X)  
即询问john的朋友是谁,,这时计算机的运行结果为:
X=mary                 (mary是john的朋友)
1 Solution                (得到了一个结果)
程序运行界面如下图所示:


例2 汉诺塔问题:
        有N个有孔的盘子,最初这些盘子都叠放在柱a上(如图1),要求将这N个盘子借助柱b从柱a移到柱c(如图2),移动时有以下限制:每次只能移动一个盘子;大盘不能放在小盘上。问如何移动?



该问题可以采用递归法思想来求解,其源程序为:
predicates                             /*谓词段*/
       hanoi(integer)
       move(integer,symbol,symbol,symbol)
       inform(symbol,symbol).
      
clauses                               /*子句段*/
       hanoi(N):-move(N,a,b,c).
       move(1,A,_,C):-inform(A,C),!.
       move(N,A,B,C):-N1=N-1,move(N1,A,C,B),
       

赞助本站

人工智能实验室

相关热词: 转帖 人工 智能语

下一篇:没有了...
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港