• 20182323 2019-2020-1 《数据结构与面向对象程序设计》实验九报告


    学号20182323 2019-2020-1 《数据结构与面向对象程序设计》实验九报告

    课程:《程序设计与数据结构》

    班级: 1823

    姓名: 曹骞

    学号: 20182323

    实验教师:王志强

    实验日期:2019年12月8日

    必修/选修: 必修

    1.实验内容

    1. 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)
    2. 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)
    3. 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)
    4. 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)
    5. 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)

    2. 实验过程及结果

    有向图:

    无向图:

    遍历:


    拓扑排序

    最小生成树

    迪杰斯特拉算法

    3. 实验过程中遇到的问题和解决过程

    • 问题1:在编写无向网络时需要写一个最便宜路径的问题,当时没有想出来怎么去写,找了一下书上关于这个问题的描述,是关于用Dijkstra算法来解决的。那么,Dijkstra算法具体如何解决问题?

    • 问题1解决方案:

      (1) 初始时,S只包含起点s;U包含除s外的其他顶点,且U中顶点的距离为"起点s到该顶点的距离"[例如,U中顶点v的距离为(s,v)的长度,然后s和v不相邻,则v的距离为∞]。

      (2) 从U中选出"距离最短的顶点k",并将顶点k加入到S中;同时,从U中移除顶点k。

      (3) 更新U中各个顶点到起点s的距离。之所以更新U中顶点的距离,是由于上一步中确定了k是求出最短路径的顶点,从而可以利用k来更新其它顶点的距离;例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。

      (4) 重复步骤(2)和(3),直到遍历完所有顶点。

    其他(感悟、思考等)

    这次的倒数第二次实验了,加油!

    参考资料

    Dijkstra算法之 Java详解

  • 相关阅读:
    关于栈部分知识点
    面向对象--四则运算
    转型第一步
    输入输出文件版本——计算题
    作业二
    2017《面向对象程序设计》课程作业一
    第四次作业
    light oj 1079
    Light oj 1080
    Codeforces 486B OR in Matrix【水题】
  • 原文地址:https://www.cnblogs.com/caoqian1314/p/12008336.html
Copyright © 2020-2023  润新知