2024-2025-1 20241316 《计算机基础与程序设计》第十一周学习总结
2024-2025-1 20241316 《计算机基础与程序设计》第十一周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第十一周作业 |
这个作业的目标 | <网络拓扑 云计算 网络安全 Web HTML,CSS,Javascript XML> |
教材学习内容总结
-
《计算机科学概论(第七版)》第15章内容总结
- 人工智能基础
- 定义与目标:人工智能(AI)旨在让计算机具备智能行为,包括学习、推理、解决问题等能力。它涉及多个领域知识的融合,如计算机科学、心理学、语言学等。
- 图灵测试:是判断机器是否具有智能的一种测试方法。如果一台机器能在与人类的对话中,让人类无法分辨其是机器还是人类,就认为这台机器通过了图灵测试,在一定程度上具备智能。
- 知识表示:人工智能系统需要有效地表示知识,常见的方式有语义网络、框架等。语义网络通过节点表示概念和对象,边表示它们之间的关系,例如用节点表示“动物”“哺乳动物”,用边表示“是一种”的关系;框架则是一种更结构化的表示方法,类似于面向对象编程中的类,有槽来存放属性值等。
- 人工智能中的搜索策略
- 盲目搜索与启发式搜索:盲目搜索包括广度优先搜索和深度优先搜索。广度优先搜索按层次依次扩展节点,适用于求最短路径等问题;深度优先搜索则优先沿着一条路径深入搜索,可能会陷入无限分支。启发式搜索利用启发信息来引导搜索方向,如A*算法,通过评估函数综合考虑已走过的路径代价和估计到目标的剩余代价,能更高效地找到目标解。
- 机器学习基础
- 监督学习:训练数据包含输入和对应的正确输出(标签)。例如在图像分类中,输入是图像,标签是图像所属的类别(如猫、狗等)。常见的监督学习算法有决策树、支持向量机(SVM)等。决策树通过对数据特征进行逐步划分来构建树形模型,用于分类或回归;SVM则是寻找一个最优的超平面来划分不同类别的数据。
- 无监督学习:训练数据没有标签,主要用于发现数据中的模式和结构。聚类是无监督学习的一种典型应用,如K - 均值聚类,它将数据划分为K个簇,使得同一簇内的数据点相似度高,不同簇之间的数据点相似度低。
- 强化学习:智能体(agent)在环境中采取行动,根据环境反馈的奖励信号来学习最优策略。例如机器人在房间中移动,当它靠近目标位置时得到正奖励,碰撞到障碍物得到负奖励,通过不断尝试来学习最佳的移动策略。
- 人工智能基础
-
《计算机科学概论(第七版)》第16章内容总结
- 计算理论基础
- 自动机理论:有限自动机是一种简单的计算模型,它由状态、输入字母表、状态转移函数、初始状态和接受状态组成。可以用于识别简单的语言模式,如正则表达式所描述的模式。下推自动机在有限自动机的基础上增加了一个栈,能够识别更复杂的语言,如上下文无关语言,用于处理如编程语言中语法结构的识别。
- 形式语言:语言可以通过语法来定义,语法包括终结符、非终结符、产生式等。正则语言是最简单的形式语言,由正则表达式生成,可以用有限自动机识别;上下文无关语言比正则语言更复杂,通过上下文无关文法定义,下推自动机可以识别,用于描述编程语言的语法;还有更复杂的语言类型,如上下文有关语言和递归可枚举语言。
- 可计算性与停机问题
- 可计算性:一个函数如果可以用图灵机在有限步骤内计算出结果,就称这个函数是可计算的。图灵机是一种抽象的计算模型,有无限长的纸带、读写头和状态转移规则。许多实际的计算问题都可以转化为图灵机是否能计算的问题。
- 停机问题:这是一个著名的不可计算问题。简单来说,无法设计一个通用的程序来判断任意给定的程序在给定输入下是否会停机(终止运行)。通过反证法可以证明停机问题的不可解性,这也表明了存在一些问题是计算机无法有效解决的,从理论上界定了计算的极限。
- 计算理论基础
-
《C语言程序设计》第10章内容总结
- 指针与数组的高级关系
- 指针运算与数组访问:指针可以进行算术运算,如指针加1或减1,当指针指向数组元素时,指针加1实际上是指向下一个数组元素。数组名在很多情况下可以看作是一个指向数组首元素的常量指针。例如,
int arr[5]; int *p = arr;
,这里p
指向arr
的首元素,p + 1
指向arr[1]
。这种关系使得可以通过指针高效地访问和操作数组元素,并且可以用指针来遍历整个数组。 - 二维数组与指针:对于二维数组
int arr[3][4];
,可以把它看作是一个一维数组,其中每个元素又是一个包含4个整数的一维数组。可以用指针来访问二维数组,如int (*p)[4]=arr;
,这里p
是一个指向包含4个整数的数组的指针,通过p[i][j]
(等价于(*(p + i))[j]
)的方式可以访问二维数组中的元素。
- 指针运算与数组访问:指针可以进行算术运算,如指针加1或减1,当指针指向数组元素时,指针加1实际上是指向下一个数组元素。数组名在很多情况下可以看作是一个指向数组首元素的常量指针。例如,
- 指针与函数
- 函数参数传递指针:函数可以通过指针参数来修改调用者传入的变量的值。例如,
void swap(int *a, int *b)
函数,通过接收两个指向整数的指针,在函数内部交换指针所指向的值,从而改变调用函数时传入的两个整数变量的值。这是一种非常有效的数据传递和修改方式,避免了值传递可能带来的无法修改原始数据的问题。 - 函数返回指针:函数可以返回指针类型的值。但要注意返回的指针必须指向有效的内存区域,不能返回局部变量的指针(因为局部变量在函数结束后内存会被释放)。例如,可以返回一个指向动态分配内存区域的指针,或者返回一个指向全局变量或静态变量的指针。
- 函数参数传递指针:函数可以通过指针参数来修改调用者传入的变量的值。例如,
- 动态内存分配与指针
malloc
、calloc
和free
函数:malloc
函数用于在堆上分配指定字节数的内存空间,返回一个指向该内存区域的指针。例如,int *p = (int *)malloc(n * sizeof(int));
可以分配n
个整数大小的内存空间。calloc
函数与malloc
类似,但会在分配内存后将内存区域初始化为0。free
函数用于释放由malloc
或calloc
分配的内存,避免内存泄漏,如free(p);
将释放p
所指向的内存空间。合理使用这些函数可以灵活地管理内存,满足程序在运行过程中对内存的动态需求。
- 指针与数组的高级关系