云计算存在哪些安全问题
近几年,随着互联网的高速发展和科技的不断进步,中国云计算市场也已经初具规模。云计算作为一种新兴的应用计算机技术,除了提供计算服务外,还提供了存储服务,当所有的计算行为和数据存储都暴露在聚散无形、虚无缥缈的云中的时候,这就必然会涉及到个人、企业或机构的隐私数据,会引起人们的恐慌。云技术的兴起,使人类在互联网的发展到达了又一巅峰,然而,“云”也是一把双刃剑。在信息时代,“信息”是至关重要的,隐私信息泄露无孔不入。因此,基于互联网的云计算服务也存在一定的安全问题。
那么,云计算到底存在着哪些安全问题呢?
1、数据丢失:这是由于云计算中对数据的安全控制力度不够,API访问权限控制或密钥生成、存储和管理方面的不足造成的,此外,还可能缺乏必要的数据销毁政策。
2、共享技术漏洞:由于错误配置造成的严重影响。
3、使用证书和认证体系:数据泄露等安全事件的攻击的源头经常是简单身份认证体系、弱口令和简单的密钥或证书系统,而人员工作内容变更或者离开部门时经常忘记移除相应的用户权限。
4、内奸:云计算服务供应商的内部工作人员评估不足。
5、账户、服务和通信劫持:很多数据、应用程序和资源都集中在云计算中,云计算的身份验证机制薄弱,容易产生入侵威胁。
6、不安全的应用程序接口:在开发应用程序方面,企业不够严格的审核过程。
7、没有正确运用云计算:在运用方面,技术人员的操作比不上黑客入侵技术。
8、未知的风险:长期的透明度问题,一直困扰着云服务供应商,帐户用户仅使用前端界面,他们不知道他们的供应商使用的是哪种平台或者修复水平。
9、账户
人工智能的安全、伦理和隐私问题
人工智能的安全、伦理和隐私问题一、人工智能的安全问题1.人工智能网络安全问题众所周知,很多行业在应用入工智能这项技术以及相关的知识的时候都是依附于计算机网络来进行的,而计算机网络这个行业是错综复杂的,很多计算机网络的安全问题也是目前我国面临的很严重的问题之一,相应的人工智能的网络安全问题也是还存在问题的,比如机器人在为人类服务的过程中,操作系统可能遭到黑客的控制,机器人的管理权限被黑客拿到,使机器人任由黑客摆布;亦或突然源代码遭受到攻击,人工智能的信息基本通过网络进行传输,在此过程中,信息有可能遇到黑客的篡改和控制,这就会导致机器人产生违背主人命令的行为,会有给主人造成安全问题的可能性。不仅如此,在人工智能的发展过程中,大量的人工智能训练师需要对现有的人类大数据进行分析和统计,如何防止信息的泄漏和保护个人信息的隐私也是人工智能领域需要关注的问题。
2.人工智能应用范围限定的问题对一些发展不成熟、会有引起安全问题的可能性的领域以及技术的应用范围给出一定的限定,这是保障人类与社会和谐发展的一种手段,也是不能或缺的一个步骤。目前,人工智能的发展也是如此的,这也是人工智能目前安全问题所面临的问题之一。目前各行各业都有人工智能的应用,比如无人驾驶、各类机器人等,很多行业都会看到人工智能的存在,小到购物APP中的客服机器人,大到国际比赛中机器人的应用,在许多危险的领域,如核电、爆破等危及人类生命安全的场景,发挥了至关重要的作用。这些领域的应用如果应用的成功那没什么问题,一旦出现问题就会产生很严重的安全性问题。对于人工智能应用的范围,目前并没有给出明确的界定,也没有明确的法律依据,这就需要相关组织和机构,尽快对人工智能的适用场景进行梳理,加快人工智能标准和法律的建设步伐,防止一些不法分子,利用法律漏洞将人工智能运用到非法的范围中,造成全人类不可估量的损失。
3.人工智能本身的安全标准人工智能的产生以及应用的本身目的并不是为了赶超人类或者达到人类的智力水平,它本身存在的价值是服务于人类,可以成为人类生活的更好的一种工具,人类需要对其有着一定的控制的能力。但是近几年来,很多人工智能的存在是为了与人类的智力水平以及人类为标准,忽略了部分人类伦理的问题,甚至涉及到部分人权问题,这就偏离了人工智能本身存在的目的,而这种的偏离会产生一定的安全问题,从而影响人工智能的发展。所以人们应对机器人的道德和行为判断力进行判定,确保其在人类的道德伦理范围中,避免人工智能产物做出危害人类安全的行为。人类必须对人工智能的行为进行严格的监管,也要大力发展人工智能自身的伦理监督机制,使其为人类所用。
二、人工智能的伦理问题1.人工智能算法的正义问题依托于深度学习、算法等技术,从个性化推荐到信用评估、雇佣评估、企业管理再到自动驾驶、犯罪评估、治安巡逻,越来越多的决策工作正在被人工智能所取代,越来越多的人类决策主要依托于人工智能的决策。由此产生的一个主要问题是公平正义如何保障?人工智能的正义问题可以解构为两个方面:第一,如何确保算法决策不会出现歧视、不公正等问题。这主要涉及算法模型和所使用的数据。第二,当个人被牵扯到此类决策中,如何向其提供申诉机制并向算法和人工智能问责,从而实现对个人的救济,这涉及透明性、可责性等问题。在人工智能的大背景下,算法歧视已经是一个不容忽视的问题,正是由于自动化决策系统日益被广泛应用在诸如教育、就业、信用、贷款、保险、广告、医疗、治安、刑事司法程序等诸多领域。从语音助手的种族歧视、性别歧视问题,到美国犯罪评估软件对黑人的歧视,人工智能系统决策的不公正性问题已经蔓延到了很多领域,而且由于其“黑箱”性质、不透明性等问题,难以对当事人进行有效救济。
2.人工智能的透明性和可解释性问题人工智能系统进入人类社会,必然需要遵守人类社会的法律、道德等规范和价值,做出合法、合道德的行为。或者说,被设计、被研发出来的人工智能系统需要成为道德机器。在实践层面,人工智能系统做出的行为需要和人类社会的各种规范和价值保持一致,即价值一致性或者说价值相符性。由于人工智能系统是研发人员的主观设计,这一问题最终归结到人工智能设计和研发中的伦理问题,即一方面需要以一种有效的技术上可行的方式将各种规范和价值代码化,植入人工智能系统,使系统在运行时能够做出合伦理的行为;另一方A面需要避免研发人员在人工智能系统研发过程中,将其主观的偏见、好恶、歧视等带入人工智能系统。算法歧视与算法本身的构建和其基于的数据样本数量及样本性质密不可分。算法歧视问题其实取决于底层数据的积累,数据积累越多算法计算就越准确,对某一人群的算法描述就越精准。同时,随着算法复杂性的增加和机器学习的普及导致算法黑箱问题越来越突出。美国计算机协会公共政策委员会在《算法透明性和可问责性声明》中提出七项基本原则,第一项基本原则即为解释,其含义是鼓励使用算法决策系统对算法过程和特定决策提供解释,并认为促进算法的可解释性和透明性在公共政策中尤为重要。未来人工智能系统将会更加紧密地融入社会生活的方方面面,如何避免诸如性别歧视、种族歧视、弱势群体歧视等问题,确保人工智能合伦理行为的实现,这需要在当前注重数学和技术等基本算法研究之外,更多地思考伦理算法的现实必要性和可行性。
三、人工智能的隐私问题1.个人隐私的过度收集互联网的发展以及人工智能技术的应用在很大程度上降低了大数据在分析应用方面的成本,摄像头已经遍布我们生活的大部分角落,走在街上我们的一行一动,都随时随地在电子监控的掌控之中;计算机被广泛利用来准确地记录人们的浏览记录:移动通信设备随时跟踪人们的通话记录,聊天记录等。在人工智能时代,在收集个人信息面前,人们面对无处可逃的命运。在人工智能的应用中,监控发生了根本性的变化,融合了各种类型的监控手段,监控的力度也变的越来越强大。以CCTV视频监控为例,它不再是单一的视频监控或图像记录和存储,其与智能识别和动态识别相结合,大量的视频监控信息构成了大数据,在此基础上通过其他技术的智能分析就能进行身份的识别,或是与个人的消费、信用等的情况进行关联,构成一个人完整的数字化的人格。人工智能应用中的数据米源于许多方面,既包括政府部门也有工商业企业所收集的个人数据资料,还包含着用户个人在智能应用软件中输入和提供的数据资料,比如在可穿戴设备中产生的大量个人数据资料,以及智能手机使用所产生的大量数据资料都可能成为人工智能应用中被监控的部分,它在不改变原有形态的前提下对个人的信息进行关联,将碎片化的数据进行整合,构成对用户自身完整的行为勾勒和心理描绘,用户很难在此情况下保护自己的个人隐私。视频监控还可能借助无线网络通信,使隐私遭遇同步直播成为现实,一些非法的同步录像行为,具有侵犯隐私利益的可能性。此类人工智能技术的广泛应用,让我们隐私无处安放,不仅超出了公众所能容忍的限度,也是对整个社会隐私保护发起的挑战。
2.个人隐私的非法泄露在人工智能不断发展,应用领域不断拓展,人工智能技术在各行各业中都发挥着越来越重要的作用,渗透在各大领域之中,带动着产业的发展,同时我们也必须承认该项技术的发展和应用无法避免的隐患。很多情况下,我们在不自知或不能自知的状态下向智能应用的运营商或者服务提供商提供我们的数据信息,每个人的数据都可能被标记,被犯罪分子窃取并转卖。以“Facebook”数据泄露为例,2018年3月17日,美国《纽约时报》曝光Facebook造成5000多万的用户隐私信息数据被名为“剑桥分析(CambridgeAnalytica)”的一家公司泄露,这些泄露的数据中包含用户的手机号码和姓名、身份信息、教育背景、征信情况等,被用来定向投放广告。“而在此次事件中,一方面是由于使用智能应用的普通用户对自身隐私数据缺乏危机意识和安全保护的措施,另一方面Facebook应用中规定只需要用户的单独授权就能收集到关联用户的相关信息,其将隐私设置为默认公开的选项给第三方抓取数据提供了可乘之机。同样Facebook之所以受到谴责的一个重要原因就是未能保护好用户的隐私数据,欠缺对第三方获取数据目的的必要性审查,对第三方有效使用数据缺乏必要的监控,使个人数据被利益方所滥用,欠缺网络安全事件的信息公开和紧急处理的经验,不仅会侵害网络用户个人的合法权利,也会对社会的发展进步产生消极的影响。Facebook在对数据使用和流转中,并未对个用户数据提起重视、履行责任。在向第三方提供数据共享的便利同时并没有充分考虑到用户隐私保护的重要性和必要性,以及没有采取必要的预防策略,极易对平台数据造成滥用的风险。不难看出,从分析用户的隐私数据来定向投放广告追求商业价值和经济利益,到一再发生的泄密事件使得用户隐私数据信息泄露变得更加“有利可图”。一方面,人工智能应用由于在技术上占有优势,在获得、利用、窃取用户的隐私数据时有技术和数据库的支撑,可以轻松实现自动化、大批量的信息传输,并在后台将这些数据信息进行相应的整合和分析;另一方面,后台窃取隐私数据时,我们普通的用户根本无法感知到,在签订隐私条款时很难对冗长的条文进行仔细的阅读,往往难以发现智能应用中隐藏着的深层动机。在此次数据泄露事件中,该平台本身并没有将用户的数据直接泄露出去,而是第三方机构滥用了这些数据,这种平台授权、第三方滥用数据的行为更加快了隐私泄露的进程。
3.个人隐私的非法交易在人工智能时代,个人信息交易已形成完整的产业链,在这个空间中,一个人的重要隐私信息几乎全部暴露在外,包括身份证号,家庭住址,车牌号,手机号码和住宿记录,所有这些的信息都成为待出售的对象。在人工智能技术广泛应用的同时,人们常用的智能手机、电脑以及社交媒体平台都在无时无刻的记录着我们的生活轨迹,各种垃圾广告和邮件可以实现精准的推送,推销电话、诈骗短信等成为经常光顾的对象,尽管我们没有购买理财产品,没有购房需求,没有保险服务等,也没有向这些公司提供过自己的隐私数据信息,但无法避免而且能经常接到理财公司、房地产商、保险公司等的推销电话。探究这些公司对用户偏好和兴趣精准了解的缘由,那便是人工智能应用中个人隐私的非法交易行为,我们保留在网站或企业中的个人信息,除了由该企业本身使用外,这些企业还经常与其他的个人和企业共同分享、非法交易,而忽略了公民的个人隐私安全。目前,人们的个人数据,如电话号码,银行卡信息,购车记录,收入状况,网站注册信息等,已成为私人非法交易的严重灾区,这些个人信息被不法分子通过非法交易获得并通过循环使用来获利。现阶段,这类专门进行个人信息买卖的公司在国内不计其数,大大小小的分布在各种隐蔽的角落,甚至有一些正规的大型企业也免不了买卖个人信息的行为。当今社会,公民的很多日常行为都不得不提供自己的私人信息,如应聘工作、参加考试、购买保险、购买车票、寻医看病等等。这些信息提供给企业商家后,他们就有义务对用户的信息进行保密,而目前对用户信息保密的相关法律规定还比较欠缺,因此往往寄希望于企业商家通过自律行为来保护用户的隐私。但是目前的现状是大多数企业的自身素质不高,单纯将对隐私保护寄希望于商家企业的自律是不现实的,这些数据往往会被企业商家非法买卖,甚至将这些非法买卖的个人信息用于诈骗、传销。
【人工智能】1问题求解:状态空间图和盲目搜索
什么是问题求解?问题求解可以理解为利用知识,尽可能有效的找到问题的解,或者最优解的过程,主要包括:1)问题描述方法:状态空间法,与或树表示法;2)搜索方法(搜索策略):盲目搜索,启发式搜索。
一、状态空间问题描述1.问题表示1)初始状态集合:当前所处的环境的集合。2)操作符集合:把一个问题从一个状态变换为另一个状态的动作集合。3)目标测试函数:确定一个状态是否是目标。4)路径费用函数:从一个状态到另一个状态的代价等。
2.状态空间法状态空间法是以状态和算符为基础来表示和求解问题的。1)状态:状态用于描述问题求解过程中任一时刻状况的数据结构,用一组变量的有序组合表示:SK=(SK0,SK1,…)2)操作符(算符):把问题从一种状态变换为另一种状态的手段。走步、过程、规则、数学算子、运算符号或逻辑符号。3)状态空间:(S,F,G)表示,其中S为初始状态的集合,F是操作符的集合;G是目标状态的集合。4)状态空间图:用状态标识节点,用操作标识有向边,有向边的方向由操作的施加对象状态指向操作的结果状态。
3.二阶汉诺塔问题的表示二阶汉诺塔问题:设有1、2、3三根钢针,在1号钢针上穿有A、B两个金片,A小于B,A位于B的上面。要求把这两个金片全部移到另一根钢针上,而且规定每次只能移动一片,任何时刻都不能使B位于A的上面。1)状态:SK=(SK0,SK1),SK0表示A所在的钢针号,SK1表示B所在的钢针号:2)操作:A(i,j)表示把金片A从i号钢针移到j号钢针;B(i,j)表示把金片B从i号钢针移到j号钢针。3)组成状态空间图:
二、盲目搜索1.什么是搜索人工智能所要解决的问题大部分是结构不良或非结构化的问题,对这样的问题一般不存在成熟的求解算法可供利用,而只能是利用已有的知识一步步地摸索着前进。搜索就是:根据实际问题,不断寻找可用知识,确定推理路线,从而构造一条代价尽可能的少的路线,而问题又能得到圆满的解决。
2.什么是盲目搜索预先规定好控制策略进行搜索,在搜索过程中获取的中间信息不影响或改变控制策略,由于搜索总是按预先规定的路线进行,没有考虑到问题本身的特性,所以这种搜索具有盲目性,效率不高,不便于复杂问题的求解。尽管盲目搜索的性能不如启发式搜索,但由于启发式搜索需要抽取与问题本身有关的特征信息,而这种特征信息的抽取往往又比较困难,因此盲目搜索仍不失为一种有用的搜索策略。
3.问题求解的性能1)完备性:是否能找到解;2)最优性:找到最优解;3)时间复杂度:找到一个解花费时间;4)空间复杂度:需多少存储空间。
4.一般的图搜索1)基本思想:先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点,然后检查问题的目标状态是否出现在这些子节点中。若出现,则搜索成功,找到了该问题的解;若没出现,则再按照某种搜索策略从已生成的子节点中选择一个节点作为当前扩展节点。重复上述过程,直到目标状态出现在子节点中或者没有可供扩展的节点为止。2)数据结构:Open表:用于存放刚生成的节点,由于这些节点还没有进行扩展,因此也称为未扩展节点表;Closed表:用于存放已经扩展的节点,因此Closed表也称为已扩展节点表。3)搜索过程:①把初始节点S0放入OPEN表,并建立目前只包含S0的图,记为G。②检查OPEN表是否为空,若为空则问题无解,退出。③把OPEN表的第一个节点取出放入CLOSED表,并记该节点为节点n。④考察节点n是否为目标节点。若是,则求得了问题的解,退出。⑤扩展节点n,生成一组子节点。把其中不是节点n先辈的那些子节点记作集合M,并把这些子节点作为节点n的子节点加入G中。⑥针对M中子节点的不同情况,分别进行如下处理:A、对于那些未曾在G中出现过的M成员设置一个指向父节点(即节点n)的指针,并把它们放入OPEN表。B、对于那些先前已在G中出现过的M成员,确定是否需要修改它指向父节点的指针。(计算是否需要修改,涉及到节点和路径的代价,每次计算都要从S0算到目标节点)C、对于那些先前已在G中出现并且已经扩展了的M成员,确定是否需要修改其后继节点指向父节点的指针。(对于C这种情况,针对的是已扩展节点的后继节点不只一个父节点时,到后继节点的总代价可能因为B中修改而变化。即对于C这种情况,要先进行B的修改。)⑦按某种搜索策略对OPEN表中的节点进行排序。⑧转第(2)步。
5.关于一般图搜索的说明1)状态空间搜索有通用性,之后的各种搜索策略都是特例,主要体现在Open表中节点排序不同,另外对于广搜这种一层一层的搜索,代价相同的情况下,也不涉及指针的修改。2)一个节点经过一个算符只生产一个子节点,但是因为对于这个节点来说有很多个算符,此时就会有一组子节点,其中就有可能有父节点,祖父节点等,此时不能将这些先辈节点作为当前扩展节点的子节点。除此之外的节点记为集合M,加入图G中。3)依据代价修改指针(表中的父节点)。4)注意:搜索得到的图G和状态空间图时不一样的,由搜索图中所有节点以及反向指针构成的集合是搜索树。5)到目标节点的反向指针构成路径。6)盲目搜索仅适用于状态空间是树状结构的问题,因此对于盲目搜索而言,不会出现修改指针的情况,每个子节点都是第一次出现的。
三、广度优先搜索1.基本思想从初始节点S0开始,逐层地对节点进行扩展并考察它是否为目标节点,在第n层的节点没有全部扩展并考察之前,不对第n+1层的节点进行扩展。OPEN表中的节点总是按进入的先后顺序排列,先进入的节点排在前面,后进入的排在后面。
2.搜索过程①把初始节点S0放入OPEN表。②如果OPEN表为空,则问题无解,退出。③把OPEN表的第一个节点(记为节点n)取出放入CLOSED表。④考察节点n是否为目标节点。若是,则求得了问题的解,退出。⑤若节点n不可扩展,则转第②步。⑥扩展节点n,将其子节点(不含先辈节点)放入OPEN表的尾部,并为每一个子节点都配置指向父节点的指针,然后转第②步。
3.优劣①缺点:盲目性较大,当目标节点距离初始节点较远时将会产生许多无用节点,搜索效率低。而且写出Open表可以发现,若目标节点已经被扩展出来,但是没有判断(判断和扩展时在将节点放入Close表时进行的),在执行到判断目标节点的时候,多余已经执行了很多扩展的操作。②优点:只要问题有解,用广度优先搜索总可以得到解,而且得到的是路径最短的解。
四、深度优先搜索1.基本思想从初始节点S0开始扩展,若没有得到目标节点,则选择最后产生的子节点进行扩展,若还是不能到达目标节点,则再对刚才最后产生的子节点进行扩展,一直如此向下搜索。当到达某个子节点,且该子节点既不是目标节点又不能继续扩展时,才选择其兄弟节点进行考察。
2.搜索过程①把初始节点S0放入OPEN表。②如果OPEN表为空,则问题无解,退出。③把OPEN表的第一个节点(记为节点n)取出放入CLOSED表。④考察节点n是否为目标节点。若是,则求得了问题的解,退出。⑤若节点n不可扩展,则转第②步。⑥扩展节点n,将其子节点放入到OPEN表的首部,并为其配置指向父节点的指针,然后转第②步。
3.深度优先局限性深度优先相当于对优先某一个分支进行搜索,如果这个分支上没有解,或者时无限分支,那么就很难得到解或者根本得不到解,解得到了解有可能不是最优解。并不是一种完备的搜索算法。
4.有界深度优先搜索1)对深度优先搜索引入搜索深度的界限(设为dm),当搜索深度达到了深度界限,而尚未出现目标节点时,就换一个分支进行搜索。搜索过程如下:①把初始节点S0放入OPEN表中,置S0的深度d(S0)=0。②如果OPEN表为空,则问题无解,退出。③把OPEN表中的第一个节点(记为节点n)取出放入CLOSED表。④考察节点n是否为目标节点。若是,则求得了问题的解,退出。⑤如果节点n的深度d(n)=dm,则转第②步。⑥若节点n不可扩展,则转第②步。⑦扩展节点n,将其子节点放入OPEN表的首部,并为其配置指向父节点的指针,并指定每一个子节点的深度为d(n)+1然后转第②步。2)优化:dm的选择:先任意给定一个较小的数作为dm,然后进行上述的有界深度优先搜索,当搜索达到了指定的深度界限dm仍未发现目标节点,并且CLOSED表中仍有待扩展节点时,就将这些节点送回OPEN表。最优解:为找到最优解,可增设一个表(R),每找到一个目标节点后,就把它放入到R的前面,并令dm等于该目标节点所对应的路径长度,然后继续搜索。由于后求得的解的路径长度不会超过先求得的解的路径长度,所以最后求得的解一定是最优解。例如如果S3和S5是目标节点,找到S3后,取Dm=3,R表中增加S3,继续搜索;找到S5,取Dm=2,R表中增加S5,解为S5。
五、代价树搜索1.代价计算1)代价树:边上标有代价(或费用)的树称为代价树。2)代价树中,用c(x1,x2)表示从父节点x1到子节点x2的代价。3)用g(x)表示从初始节点S0到节点x的代价。4)代价计算公式:g(x2)=g(x1)+c(x1,x2)
2.代价树的广搜和深搜代价树的搜索也只是Open表内的排序不一样,要先计算代价,然后根据一定规则进行排序。1)广度搜索:OPEN表中的节点在任一时刻都是按其代价从小至大排序的,代价小的节点排在前面,代价大的节点排在后面,而不管节点在代价树中处于什么位置上。2)深度搜索:刚扩展出的子节点中选一个代价最小的节点送入CLOSED表进行考察
《人工智能导论》第三章:通过搜索对问题求解(笔记二)
第三章通过搜索对问题求解一.问题求解Agent二.问题实例三.树搜索算法四.无信息搜索策略(必考知识)4.1宽度优先搜索4.2一致代价搜索!!!4.3深度优先搜索4.4深度受限搜索!!!4.5迭代加深的深度优先搜索!!!五.有信息(启发式)的搜索策略5.1最佳优先搜索!!!5.2一致代价搜索-分支定界法5.3A搜索5.4A*搜索三个感叹!表重点一.问题求解Agent搜索为一种求解问题的一般方法。搜索问题:已知一个问题的初始状态和目标状态,找到一个操作序列,使得问题的状态能从初始状态转移到目标状态。最优搜索问题:获得的操作序列不仅是问题的解,而且使得总代价最低。搜索问题特点:(1)初始状态确定(2)当前状态是否为目标转态是可检测的(3)状态空间离散(4)每个状态可以采取的合法行动和相应后继状态是确定的(5)环境是静态的(6)路径代价函数是已知的典序搜索问题(1)八数码难题(2)旅行售货员问题搜索问题四个要素:(1)初始状态(2)后继函数:某个行动输入给定状态,可以输出相应的后继状态(3)目标测试:给定状态是否为目标状态(4)路径代价函数:状态转移所需的代价搜索中需要解决的基本问题:(1)是否一定能找到一个解。(2)找到的解是否是最佳解。(3)时间与空间复杂性如何。(4)是否终止运行了或是否会陷入一个死循环。搜索的主要过程:(1)从初始或目的状态出发,并将它作为当前状态。(2)扫描操作的算子集,将适用当前状态的一些操作算子作用于当前状态而得到新的状态,并建立指向其父结点的指针。(3)检查所生成的新状态是否满足结束状态,如果满足,则得到问题的一个解,并可沿着有关指针从结束状态反向到达开始状态,给出解答的路径;否则,将新状态作为当前状态,返回第(2)步再进行搜索。搜索策略盲目搜索启发式搜索在不具有对特定问题的任何有关信息的条件下,按固定的步骤(依次或随机调用操作算子)进行的搜索。考虑特定问题领域可应用的知识,动态地确定调用操作算子的步骤,优先选择较适合的操作算子,尽量减少不必要的搜索,以求尽快地到达结束状态。按搜索方向进行分类:(1)数据驱动:从初始状态出发的正向搜索。正向搜索——从问题给出的条件出发。(2)目的驱动:从目的状态出发的逆向搜索。逆向搜索:从想达到的目的入手,看哪些操作算子能产生该目的,以及应用这些操作算子产生目的时需要哪些条件。(3)双向搜索:从开始状态出发作正向搜索,同时又从目的状态出发作逆向搜索,直到两条路径在中间的某处汇合为止。二.问题实例实例:Romania(1)已知条件:一个agent在罗马尼亚度假,目前位于Arad城市,Agent明天有航班从Bucharest起飞,不能改签退票(2)(3)真空吸尘器三.树搜索算法基本思路:从初始状态/已知状态开始,通过行动不断地探索其他状态直到找到目标状态(成功)或者没有行动可执行为止(失败)。树表示(1)根节点:初始状态(2)连线:行动(3)结点:状态空间中的状态算法性能评价标准(1)完备性:如果问题有解时,这个算法是否能保证找到解?(2)最优性:能否找到最优解(3)时间复杂度:找到解需要花费多长时间(4)空间复杂度:在执行搜索的过程中需要多少内存时间空间复杂度的度量:(1)时间由搜索过程中产生的结点数目来度量(2)空间由内存中存储的最多结点数量来度量(通常小于状态空间数量|V|+|E|)四.无信息搜索策略(必考知识)无信息搜索:除了问题定义中提供的状态信息外没有任何附加信息,算法只能区分状态是不是目标状态,无法比较非目标状态的好坏。
4.1宽度优先搜索思想:先扩展根结点,再扩展根结点的所有后继,然后再扩展它们的后继。实现:FIFO队列缺点:内存需求大,时间复杂度高4.2一致代价搜索!!!定义:扩展未扩展结点中代价最小的实现:队列按照代价从小到大排列4.3深度优先搜索思想:首先扩展最深的为扩展结点实现:用LIFO队列(栈)来存储结点4.4深度受限搜索!!!对于深度为d+1,分支数为b的情况,深度受限的搜索算法产生的结点数为:N(DLS)=b0+b1+…+bd4.5迭代加深的深度优先搜索!!!1.结合了宽度优先和深度优先的优点2.对于深度为d+1,分支数为b的情况,迭代加深的深度优先算法产生的结点数为:N(IDS)=(d+1)+(d)b+(d-1)*b2+….+(1)bd
五.有信息(启发式)的搜索策略无信息搜索的缺点:(1)广度优先搜索在进一步深入搜索之前先检查了靠近跟的节点,存储空间需求过高,很容易就被中等大小的分支因子给压垮了,例如分支因子=4(一个节点有四个孩子),则k层总共(4^k-1)/3个节点。(2)深度优先搜索(3)在求解"组合爆炸"的问题时,搜索空间增长太快(如从9!变成16!,!为阶乘),以至于盲目搜索方法无法成功。启发法:一种解决问题的方法,这种方法通过尝试来证明结果,是**“凭经验"或"试错法”**的学习方式。(1)是一个提高复杂问题解决效率的实用策略,它引导程序沿着一条最可能的路径到达解,忽略最没有希望的路径,能避免去检查死角。(2)只使用已收集的数据。(3)可以减少结点数目,适合组合复杂度快速增长的问题(4)好的启发式方法不能保证获得解,但是它们经常有助于引导人们达到解的路径。5.1最佳优先搜索!!!基本思路:通过对每一个结点计算评价函数f(n)值,找到一个f(n)最低的未扩散的结点实现:在队列中,结点按照评价函数值从低到高排序。(大多数评价函数由启发函数h构成,h(n):结点n到目标结点的最小代价估计值)最佳优先搜索实现需要open表和closed表,open表中节点按照节点接近目标状态的启发式估计值进行顺序排列,过程中不保留重复状态。伪代码//最佳优先搜索BestFirstSearch(Root_Node,goal){建open表,将根节点插入open表;while(open表不为空){从open表中取出最前节点放在节点G中(同时加入closed表);if(G是目标节点)return从根节点到G节点一条路径;while(G是子节点){if(子节点不在open表中)将子节点插入open表;else将具有最小估计值的子节点放入open表,删除其他节点;}将open表中节点按值排序;//最小值节点在最前}return失败;}分类:贪婪最佳优先搜索罗马尼亚问题首先扩展与目标结点估测距离最近的结点使用两点之间的直线距离来估测两点之间的实际距离罗马尼亚问题例子:5.2一致代价搜索-分支定界法是不采用剩余距离的启发式搜索,只计算已经走过的部分,h(n)处处为0。按照递增的代价制定搜索路径,搜索的估计成本为:f(n)=g(n)结束条件:其它路径(未到达目标节点)的代价大于or等于当前最优的路径代价。伪代码//分支定界搜索Branch_Bound(Root_Node,goal){创建open表;将根节点插入open表;while(open表不为空){取出open表中第一个元素放入结点G;if(G是目标结点)return到G的路径else将G结点子节点插入open表;按照从根节点到当前节点的路径长度对open表排序;}return失败;}例子:一致代价搜索和最佳优先搜索都是通过启发函数排最优值,它们的区别如下最佳优先搜索一致代价搜索优先值为结点到终点的估计值优先值为结点到起点的真实值估价函数为h(n)估价函数为g(n)5.3A搜索是最佳搜索和一致优先的混合搜索算法,既考虑与源点的真实距离又兼顾与目标点距离的预估值。评价函数f(n)=g(n)+h(n)g(n)=到达结点n已经花费的代价h(n)=结点n到目标节点的评估代价f(n)=通过结点n到达目标结点的总评估代价伪代码B_B_Estimata(Root_Node,goal){创建open表;将根节点插入open表;while(open表不为空){取出open表中第一个元素放入结点G;if(G是目标结点)return到G的路径else将每个子节点的估计距离加到当前距离;将节点G的子节点插入open表按照路径长度对open表排序;}return失败;}例子最佳优先搜索、一致搜索及A算法均****没有对估价函数f(n)做任何限制**5.4A*搜索1.A*算法是最优A搜索算法,其是对估价函数加上一些限制后得到的一种启发式搜索算法。2.伪代码
A*Search(Root_Node,goal){创建open表;将根节点插入open表;while(open表不为空){取出open表中第一个元素放入结点G,并标记G已被访问;if(G是目标结点)return到G的路径else将每个子节点的估计距离加到当前距离;将节点G的子节点中之前未访问过的节点插入open表按照路径长度对open表排序;}return失败;}