DS博客作业06--图

1.本周学习总结

1.思维导图

2.谈谈你对图结构的认识及学习体会

    通过学习图的一些基本操作,学习了图的两种存储结构:邻接矩阵和邻接表,图的两种遍历方法:深度优先遍历(DFS)和广度优先遍历(BFS)。
深度优先遍历是一个对每个结点查找其邻接点的过程,而广度优先遍历则是搜索了该结点相连的所有结点。通过学习Prim算法
和Kruskal算法,解决了最小生成树问题。还学习了拓扑排序,对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,
若边(u,v)∈E(G),则u在线性序列中出现在v之前。这样的线性序列称为满足拓扑次序。

2.1.题目1:7-1 图着色问题

    图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?
但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。

2.1.1设计思路

    int g[501][501]={0};
int color[501] = { 0 }; 
int search(int v)
{
    遍历邻接矩阵
    如果两点(i,j)已连接,且颜色相同color[i]==color[j],返回false
    否则返回true
}
int main
{
        g[501][501]邻接矩阵输入连接图
        color[501]输入并保存颜色
        col集合判断颜色数量
        如果颜色数量正确和search函数返回true,则输出yes
        否则输入no
}

2.1.2代码截图

2.1.3本题PTA提交列表说明。

    set col创建了一个col集合,是一种包含已排序对象的关联容器,col.insert(color[j])中把元素color[j]存放进col集合中,
有重复部分不会再被存储,memset(color, 0, sizeof(color)),将color所指向的某一块内存中的后个sizeof(color)字节的内容
全部设置为ch指定的ASCII值,它是对较大的结构体或数组进行清零操作的一种最快方法.
    这个写法是借鉴别人的的代码

2.2.题目2:7-4 公路村村通

2.2.1设计思路

    void CreateMGraph(int v,int n )
{
    邻接矩阵赋初值
    如果为对角线上的元素,g[i][j]=0
    否则g[i][j]=INF=32767
    输入连接图
}
int Prim(int v,int n)
{
    prim算法,其中如果当min=INF时输出-1,安全退出函数
                            否则令 count=count+min
    函数最后返回count;
}
int g[1005][1005];
int main()
{
        创建邻接矩阵
        m=Prim(1,v)从顶点1开始执行prim算法
        输出m
}

2.2.2代码截图



2.2.3本题PTA提交列表说明


这个不能取等,还有输出-1的时候要结束

2.3.题目3:六度空间

    “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。
然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,
能够体现社交网络关系的一手数据已经逐渐使得“六度空间”理论的验证成为可能。
假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。

2.3.2代码截图


2.3.3本题PTA提交列表说明

3、上机考试错题及处理办法

    上机时只打出了两题,回来把公路村村通打了


posted @ 2019-06-01 18:47  白白以桃花入笺  阅读(194)  评论(0编辑  收藏  举报