CS188 Project 2

CS188 Project 2: Multi-Agent Search 加州大学伯克利分校EECS 188 AI课程2024年秋季项目2的代写。该项目主题是多智能体搜索(Multi – Agent Search),要求学生为经典的吃豆人游戏(Pacman)设计智能体,包括实现 minimax 和 expectimax搜索算法,并设计评估函数。项目截止日期为10月2日晚上11:59(太平洋时间)。 1. **项目文件结构** – **编辑文件**:`multiAgents.py`,用于实现多智能体搜索智能体。 – **参考文件**:`pacman.py`(运行游戏的主文件,定义了游戏状态类型)、`game.py`(游戏世界的逻辑)、`util.py`(用于搜索算法的数据结构)等。 – **可忽略文件**:如`graphicsDisplay.py`(图形显示相关)、`ghostAgents.py`(控制幽灵的智能体)等。 2. **项目任务** – **Q1(4分):反射智能体(Reflex Agent)**:改进`multiAgents.py`中的`ReflexAgent`,使其在`testClassic`布局中表现良好,并在`openClassic`布局上进行测试评分。 – **Q2(5分):极小极大算法(Minimax)**:在`multiAgents.py`的`MinimaxAgent`类中实现对抗搜索智能体,扩展游戏树到任意深度,使用给定的评估函数对叶子节点评分。 – **Q3(5分):α – β剪枝(Alpha – Beta Pruning)**:在`AlphaBetaAgent`中实现α – β剪枝算法,提高搜索效率,确保剪枝后的结果与`MinimaxAgent`相同(极小极大值相同,选择的动作可能因打破平局的行为不同而不同)。 – **Q4(5分):期望极大算法(Expectimax)**:在`ExpectimaxAgent`中实现期望极大算法,用于建模可能做出次优选择的智能体的概率行为。 – **Q5(6分):评估函数(Evaluation Function)**:在`betterEvaluationFunction`中编写一个更好的评估函数,用于评估状态,在`smallClassic`布局上进行测试评分。 3. **项目工具** – **自动评分器(Autograder)**:可用于在本地对答案进行评分,通过`python autograder.py`命令运行所有问题的测试,也可针对特定问题或测试用例运行。 4. **注意事项** – 不要从项目1复制文件,否则无法通过Gradescope的自动评分器。 – 不要更改提供的函数或类的名称,否则会影响自动评分器的运行。 – …

CS188 Project 2 Read More »

FIT2102 Haskell

FIT2102编程范式2024课程作业2的要求用Haskell实现Markdown到HTML的转换。作业包括解析Markdown(分部分解析不同元素如文本修饰符、脚注、图像等)、将解析结果转换为HTML、为网页添加额外功能(如添加保存按钮和修改页面标题输入框)以及可选择的扩展部分(实现有趣或能展示对Haskell等理解的功能)。还需提交报告描述设计决策,代码质量也会影响评分。有提交要求和格式,包括文件名、文件内容、代码测试等,晚提交会扣分,超过七天零分。作业旨在考察学生对函数式编程和解析的理解与应用,涵盖了从解析到网页功能改进的多个方面,强调了代码质量、功能性和对特定编程概念的有效运用。

FIT2102 Programming Paradigms 2024 Assignment 2: Markdown to HTML

FIT2102 Programming Paradigms 2024 Assignment 2: Markdown to HTML Due Date: Friday, 18th October, 11:55 pm Weighting: 30% of your final mark for the unit Interview: SWOTVAC + Week 13 Overview: Students will work independently to create a parser for a subset of the Markdown specification using functional programming techniques. Programs will be implemented in …

FIT2102 Programming Paradigms 2024 Assignment 2: Markdown to HTML Read More »

cs164 hw1

Let Σ={a, b} be the alphabet for the language L={waR | ur, w^R ∈{a,b}, and w has even length), where is the reverse of u. Write a context free grammar for the language L. Consider the following grammar: $s \to|s s|$ $S \to a$ $S \to \infty$. Show that this grammar is ambiguous by finding …

cs164 hw1 Read More »

CS164 Berkeley OCaml代写

# 作业4:错误处理与堆 **注意:**这是一个为期1周的作业(发布后1周截止)。 在本次作业中,你将以两种方式实现列表:首先使用对(pair),然后使用数组。你将练习处理运行时错误和处理堆上的数据。 在本次作业结束时,你的解释器和编译器应支持以下语法(我们已突出显示你将添加的部分): | ( ) | ( ) | ( ) | (if ) | (let (( )) ) | (do …) + | list? + | vector? + | vector-length + | vector + | vector-get + ::= vector-set 我们**不会**对本次作业的测试进行评分。 然而,当你将实现提交到Gradescope(作业`hw4`)时,`examples/`目录中的示例套件将针对参考解释器和编译器运行。如果参考实现在你的任何示例上失败,Gradescope将向你展示其输出与你提供的示例预期输出的差异(如果你提供了预期输出)。 你可以根据需要多次进行此操作。我们鼓励你在开始编写解释器和编译器之前使用此选项来开发一组良好的示例! 你可以使用`dune runtest -f`来运行`examples/`目录中的所有测试。与之前一样,测试框架支持`.lisp`/`.out`文件和`examples/examples.csv`文件。 ### 手动运行编译器和解释器 除了使用`dune runtest -f`,你还可以在输入文件上手动运行解释器和编译器。 要在文件上运行解释器,请执行以下命令: …

CS164 Berkeley OCaml代写 Read More »

COMP4161 Isabelle 代写

COMP4161 Isabelle 代写 ## COMP4161 T3/2024软件验证高级主题作业1 本作业于2024年9月19日星期四开始,截止日期为2024年9月26日星期四23:59:59。我们接受纯文本(.txt)文件、PDF(.pdf)文件和Isabelle理论(.thy)文件。你可以在截止日期后最多五天(120小时)内迟交,但会有扣分:每天扣5分。本作业为带回家完成的作业。这并不意味着你可以小组合作。每份提交都是个人的。更多信息,请参阅抄袭政策:https://student.unsw.edu.au/plagiarism。你不允许使用AI工具(如ChatGPT或GitHub Copilot)来帮助你处理技术内容,或开发定义和证明。在CSE机器上使用give提交: give cs4161 a1 files… give cs4161 a1 a1.thy a1.pdf ## 1. λ-演算(16分) 通过应用语法约定和规则,对项\((pq)(\lambda p\cdot(\lambda q\cdot(\lambda r\cdot(q(rp))))))\)进行语法简化。证明你的答案。(2分) 恢复项\(a(\lambda ab.(bc)a(bc))(\lambda b.cb)\)中省略的括号(但确保不改变项结构)。(2分) 求\((\lambda f\cdot\lambda x\cdot f(fx))(\lambda g\cdot\lambda y\cdot g(g(gy)))\)的范式。通过展示归约序列来证明你的答案。归约序列中的每一步应该是一个单一的β-归约步骤。为每一步下划线或用其他方式指示被归约的项(redex)。(6分) 回忆讲座中看到的λ演算中自然数的编码(丘奇数): \(0\equiv\lambda fx,x\) \(1\equiv\lambda fx.fx\) \(2\equiv\lambda fx.f(fx)\) \(3\equiv\lambda fx.f(f(fx))\cdots\) 定义\(exp\),其中\(exp\ m\ n\)β-归约到表示\(m^n\)的丘奇数。证明你的答案。(6分) ## 2. 类型(20分) 为项\(\lambda abc.a(xbb)(cb)\)提供最一般类型。展示类型推导树来证明你的答案。树的每个节点应该对应于单个类型规则的应用,并标有所用的类型规则。该项在哪些上下文中类型正确?(5分) 找到一个具有以下类型的闭λ项: \((‘a\Rightarrow’b)\Rightarrow(‘c\Rightarrow’a)\Rightarrow’c\Rightarrow’b\) (你不需要提供类型推导,只需要提供项)。(4分) 解释为什么\(\lambda …

COMP4161 Isabelle 代写 Read More »

AWS 代写 Lab

Overview The purpose of this lab is to assess your skills and approach to automated provisioning, deployment and configuration management. We ask you to complete the Basic Goals below and deliver the outputs requested. Additional Challenges are available if you have time and want to show us what you can do. Completing the basic goals …

AWS 代写 Lab Read More »

CMU 95-702 Project 2 代写

95 – 702 信息系统管理分布式系统 Distributed Systems for ISM 项目2 客户端 – 服务器计算 Client-Server Computing 五个任务 :checkered_flag: 向Canvas提交一个名为Your_Last_Name_First_Name_Project2.pdf的单个PDF文件,以及一个包含以下五个IntelliJ项目(任务0至4)的单个zip文件。单个PDF将包含您对标记有方格旗的问题的回答。重要的是,您要清晰地标记每个答案,并提供下面提供的标签。同样重要的是,要准备好展示您的工作代码,以防我们需要验证您的提交。确保在PDF提交的顶部提供您的姓名和电子邮件地址。五个IntelliJ项目将作为五个zip文件提交,每个文件将是任务0、1、2、3和4的整个IntelliJ项目的zip。除任务1外,每个IntelliJ项目都将包含一个客户端和一个服务器。任务1将包含一个客户端、一个服务器和一个中间的恶意玩家。对于每个项目,压缩整个项目,您需要在IntelliJ中使用“File->Export Project->To Zip”。当您完成所有工作后,将一个PDF和五个项目zip文件压缩到一个大的zip文件中进行提交。将此最终文件命名为your_andrew_id.zip。 学习目标: 我们的第一个目标是让您能够使用用户数据报协议(UDP)。UDP用于许多互联网应用程序。域名服务(DNS)和动态主机配置协议(DHCP)都使用UDP。大多数视频和音频流量使用UDP。在线游戏和IP语音(VoIP)使用UDP。当我们需要高性能并且不介意偶尔丢失数据包时,我们使用UDP。另一方面,TCP也被广泛使用。它努力确保在传输过程中不会丢失任何一点信息。超文本传输协议(HTTP)使用TCP。在这个项目中我们不使用TCP。我们的第二个目标是了解中间恶意玩家的影响。我们的第三个目标是让您了解远程过程调用(RPC)提供的抽象。我们通过要求您使用代理设计并隐藏通信代码并将其与应用程序代码分开来实现这一点。RPC已经使用了四十年,是许多分布式系统的基础。我们的第四个目标是学习如何分发独立应用程序。我们使用一个简单的神经网络作为我们的应用程序。我们的意图不是在分布式系统课程中研究神经网络。但是你们中的一些人可能决定深入研究神经网络并将此应用程序作为起点。可选地,您可以使用大型语言模型(基于神经网络),如ChatGPT或Copilot,来创建您的一些代码。任务0、任务1和任务4必须在没有大型语言模型帮助的情况下完成。考试问题将具体询问关于这三个任务的代码。虽然您可以使用AI工具完成这三个任务,但这完全是可选的。也会有关于这些任务的问题,但这些问题将更具通用性(因为不同的学生可能使用不同的技术来编码这些任务)。 提交注意事项: 当您被要求提交Java代码(在单个pdf上)时,它应该有文档说明。如果代码没有良好的文档说明,将扣除分数。每个重要的代码块都将包含一个注释,描述该代码块的用途。请参阅Canvas/Home/Documentation以获取良好和不良文档的示例。 评分标准 请参阅Canvas上的一般课程评分标准。我们将使用此作业的特定未发布评分标准,但一般评分标准提供了关于此作业如何评估的大致指导。 一些简化: 在接下来的所有内容中,我们关注的是设计服务器来处理一次一个客户端。我们不探讨围绕多个同时访问者的重要问题。如果您编写一个多线程服务器来同时处理多个访问者,那很好,但不是必需的。它不会获得额外的学分。此外,对于接下来的所有内容,我们假设服务器在客户端运行之前运行。如果您想处理客户端首先运行而没有运行服务器的情况,那很好,但不会获得额外的学分。在任务1中,我们假设服务器在恶意玩家之前运行,恶意玩家在客户端之前运行。在这个作业中,您不需要关心数据验证。您可以假设用户输入的数据格式正确。一般来说,如果这些要求没有明确要求某个功能,那么您不需要提供该功能。不会为额外的功能授予额外的分数。 引用您的来源 如果您使用任何不属于您的代码(包括来自大型语言模型的代码),您需要清楚地引用来源 – 在代码上方包含完整的URL并将其放在复制的代码上方。如果您使用大型语言模型生成代码,请确保说明。请注意引用您的来源。如果您提交的代码不是您自己创建的并且您没有包含适当的引用,那么这将被报告为学术违规。 任务0介绍UDP。将IntelliJ项目命名为“Project2Task0”。 在任务0中,您将对EchoServerUDP.java和EchoClientUDP.java进行一些修改。请注意,这两个程序是标准的Java,我们不需要在IntelliJ中构建Web应用程序。这两个程序都将放在同一个IntelliJ项目中。来自Coulouris文本的EchoServerUDP.java 请注意DatagramSocket和DatagramPacket之间的区别。服务器使用DatagramPacket从客户端接收数据(在request对象中)。并且它使用DatagramPacket将数据发送回客户端(在reply对象中)。DatagramPacket始终基于字节数组。因此,要在DatagramPacket中发送消息,我们必须首先将消息转换为字节数组。要从DatagramPacket接收消息,我们必须将字节数组转换为字符串消息(如果我们期望的是字符串消息)。请注意下面客户端如何做同样的事情。客户端想要发送字符串消息。因此,它从字符串(变量m)中提取字节数组。然后我们使用m来构建DatagramPacket。当客户端接收回复时,方法reply.getData()返回字节数组 – 我们用它来构建字符串对象。来自Coulouris文本的EchoClientUDP.java 任务1说明了对UDP的恶意玩家中间攻击。将IntelliJ项目命名为“Project2Task1”。 在任务1中,您将尝试恶意玩家中间攻击。这个恶意玩家不仅仅对窃听客户端和服务器之间的对话感兴趣。它是一个主动的恶意玩家。您可能想通过先处理一个被动的恶意玩家开始 – 一个只窃听并将消息传递给服务器,然后再传递回客户端的玩家。我们将在一个项目中有三个UDP程序。将您的恶意玩家命名为EavesdropperUDP.java。您需要按照下面的描述设计并编写EavesdropperUDP.java。首先,运行在任务0中修改后的EchoServerUDP.java。EchoServerUDP将提示您输入其端口。为EchoServerUDP输入端口6789进行监听。其次,运行EavesdropperUDP.java。EavesdropperUDP将声明它正在运行,并会询问您两个端口。一个端口将是EavesdropperUDP.java将监听的端口,另一个端口将是服务器的端口号,Eavesdropper.java将伪装成该服务器。我们希望Eavesdropper.java在其控制台上显示(通过它的控制台)所有通过它的消息。我们希望它窃听线路。它将在端口6798上监听,希望一个愚蠢的客户端会犯转录错误。第三,当您运行EchoClientUDP.java时,为其提供正确的端口(真正服务器的端口)或Eavesdropper正在监听的端口。也就是说,它将与6789或6798一起工作。Eavesdropper是一个主动攻击者。如果客户端发送包含单词“like”的字符串,窃听者将用单词“dislike”替换“like”。如果“like”作为另一个单词的子字符串包含在内,例如“dislike”,窃听者将不会理会“like”这个字符串。窃听者只需要将单词“like”的第一次出现替换为单词“dislike”,并且它将不理会服务器的响应。换句话说,当它从客户端收到“like”时,它将“dislike”发送到服务器,然后不理会服务器的响应。客户端将收到“dislike”。如果客户端发送消息“halt!”,则服务器将像往常一样响应,然后停止执行。客户端在收到服务器的消息后将停止。我们的恶意玩家将永远运行。并且它将其看到的所有内容显示到其控制台。:checkered_flag:在您的单个pdf上,复制您记录的EavesdropperUDP.java程序。 :checkered_flag:截取显示您的客户端、服务器和窃听者控制台的屏幕截图。该截图将显示客户端发送的几行数据以及服务器对“halt!”请求的响应。它还将显示窃听者控制台 – 显示客户端和服务器之间的整个交互。在您的单个pdf上,将此屏幕截图标记为“Project2Task1ThreeConsoles”。确保显示客户端使用端口6789(正确的服务器)和6798(恶意玩家)。这个想法是提供屏幕截图,证明客户端可以与两个服务器一起工作。您还需要显示单词“like”被替换为单词“dislike”**在其余任务(任务2至4)中,我们没有为客户端提供停止服务器的能力。我们只在任务0和1中这样做。在其余任务中,服务器将一直运行。在其余任务中,我们不使用窃听者。 任务2说明了使用UDP的代理设计。将IntelliJ项目命名为“Project2Task2”。 对“EchoServerUDP.java”和“EchoClientUDP.java”进行以下修改: 注意:UDP消息由字节数组组成。您需要将一个整数放入一个四字节(32位)的字节数组中,然后再发送。在接收时,您需要从字节数组中提取一个整数。您可以使用来自外部源的代码来帮助您完成此操作。但请注意使用清晰的URL引用您的来源。另一种方法是只传输包含字符串数据的字节数组。您可以使用任何一种方法。:checkered_flag:在您的单个pdf上,复制您的客户端并清楚地标记为“Project2Task2Client”。:checkered_flag:在您的单个pdf上,复制您的服务器并清楚地标记为“Project2Task2Server”。:checkered_flag:截取您的客户端控制台屏幕的屏幕截图。它将包括五个整数输入(1,2,-3,4和5),并显示从服务器返回的和。它还将显示客户端被停止,然后重新运行第二次,输入(6,7,-8,9和10),以及客户端对用户“halt!”请求的响应。在您的单个pdf上,将此屏幕截图标记为“Project2Task2ClientConsole”。