《数据结构与算法 python语言描述》学习笔记(一)————绪论

第一部分:学习内容概要程序开发过程问题求解算法和算法分析数据结构第二部分:学习笔记程序开发过程  框架图分析,严格化——设计——编码——检查,翻译——测试/调试- 牛顿迭代法0.对给定正实数x和允许误差e,令变量y取任意正实数值,如:y = x;1.如果y*y与x足够接近,即 | y * y - x | < e,计算结束并把y作为结果;2.取z =(y + x...
摘要由CSDN通过智能技术生成

第一部分:学习内容概要

  

  • 程序开发过程
  • 问题求解
  • 算法和算法分析
  • 数据结构

  

第二部分:学习笔记

  • 程序开发过程

  框架图

分析,严格化——设计——编码——检查,翻译——测试/调试

  牛顿迭代法
  
  0.对给定正实数x和允许误差e,令变量y取任意正实数值,如:y = x;
  1.如果y*y与x足够接近,即 | y * y - x | < e,计算结束并把y作为结果;
  2.取z =(y + x / y)/ 2;
  3.将z作为y的新值,回到步骤1.

(举个栗子:完成平方根计算的Python函数)

    def sqrt(x):
    		y = 1.0
    		while abs( y * y - x ) > 1e-6
    			y = ( y +x / y) / 2
    			return y
  • 问题求解
      交叉路口的红绿灯安排
      贪婪算法(贪心法):根据当时掌握的信息,尽可能地向得到解的方向前进,知道不能急需再换一个方向。这样做通常找不到最优解,但能找到可以接受的解。
      红绿灯问题求解过程:
    1.有关工作开始于交叉路口的抽象图示,首先美剧出所有允许通行方向;
    2.根据通行方向和有关不同方向冲突的定义,画出冲突图;
    3.把通行方向的分组问题归结为冲突图中不相邻顶点的划分问题,用求出不相邻顶点的分组作为交叉路口中可以同时通行的方向的分组。

    (具体实现)

    def coloring(G):
    	color = 0
    	groups = set()
    	verts = vertices(G)
    	while verts:
    		new_group = set()
    		for v in list(verts):
    		if not_adjacent_with_set(v, newgroup, G):
    			new_group.add(v)
    			verts.remove(v)
    		groups.add((color, new_group))
    		color += 1
    	return groups
    
  • 算法和算法分析

      

    • 三个基本概念

      问题:一个问题W是需要解决(需要用计算求解)的一个具体需求。(例如判断人一个正整数N是否为素数)

      问题实例:问题W的一个实例w是该问题的一个具体例子,通常可以通过一组具体的参数设定。(例如判断1013是否为素数)

      算法:解决问题W的一个算法A,是对一种计算过程的严格描述。对W的任何一个实例w,实施算法A描述的计算过程,就能得到w的解。(例如一个判断素数的算法应该能给出1013是否为素数的判断,也能满足其他正整数是否为素数的判断)

    • 算法的性质

        1.有穷性:一个算法的描述应该由有限多条指

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值