算法实现
痛快最重要
计算机小白
展开
-
算法实验(二)寻找无向图的衔接点
图G的衔接点是指图G中的一个节点,删除该节点将导致图不连通。分为两部分:1.如果是根节点,则判断其是否有两个子节点(DFS树中,不是原始的图中)及以上,如果是则为衔接点。2.不是根节点,如果词典有一个子节点s,且没有任何从节点s或任何s的后代节点指向v的真祖先的后向边判断第二点我们根据一个low值来判断。 v.low=min(v.d,w.d)//(u,w)是节点v...原创 2019-05-05 11:16:43 · 576 阅读 · 0 评论 -
计算机图形学实验(一) Bresenham画直线和中点画圆法画圆
图形学的第一个实验,因为老师课上的讲解原因,所以这里将一个边长为1的正方形块作为一个像素,放大后可以看出来。先上代码,画线的:void drawLine(node * mnode){ glClearColor(0.0f, 0.0f, 0.0f,0.0f);//绘图颜色为黑色 glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1....原创 2019-05-06 16:49:19 · 3942 阅读 · 0 评论 -
计算机图形学实验(二)多边形填充
多边形填充图形学实验中有着填充多边形的实验,在这里实现了一种相对简单的方法。主要步骤:从最下边往上边开始扫描,也就是y不断增加,求出与多边形的交点,根据交点每两个点分为一组,并画出这两点之间的点,进行填充。(扫描线与每条线段会出现一个交点,两条线段的交点处按照两个点进行计算,实际上并没有画)直到扫描到最上面的部分结束。主要代码:// ScanLine.cpp: 定义控制台应用程序...原创 2019-05-07 20:20:48 · 5093 阅读 · 0 评论 -
计算机图形学实验(三) 梁友栋-Barskey线段裁剪和多边形裁剪算法实现
梁友栋-Barskey裁剪算法直接上代码吧:// ConsoleApplication2.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include<gl/GLUT.H>#include<cmath>#include<iostream>#include"node.h"using namespace std;...原创 2019-05-07 20:39:51 · 3849 阅读 · 1 评论 -
DFS的实现(邻接链表的图)
直接上代码:void linkedDgraph1::DFS_VISIT(linkedDgraph1 &G1,int u){ time += 1; dTime[u] = G1.dTime[u]=time; color[u] = GRAY; graphNode<int> *p = Adj[u].first(); while (p != NULL) { int...原创 2019-05-11 21:05:48 · 1022 阅读 · 0 评论 -
局部替换算法最小生成树
算法描述: 从T=NULL开始 for (图中的每条边e) if(加入e不构成环,则T=T+e) else e'是环上权重最大的边,T=T+e-e‘算法实现 可以看出上述的算法的关键之处就在于判断图中是否存在环以及找到环中最大的边。判断是否有环: 用dfs深度优先搜索,如果搜索过程中发现一个点u的邻接点v是灰色的,则说明...原创 2019-05-17 08:49:55 · 637 阅读 · 0 评论 -
算法实验四:寻找加权有向图中的一个负环
题目描述:给定一个有向图,图中边的权重有正有负,设图中存在若干负环,设计算法找到一个负环。思路描述:利用bellman_ford的方法先判断有没有环,如果有环,保存这条能relax的边,然后通过他的前驱点往前遍历,并将这些边保存到一个数组里,在过程中先判断是否出现了此点,如果出现说明找到环,这个点以及后面的点都是这个环中的点,否则继续加入数组中。算法实现:bool linke...原创 2019-05-24 10:42:04 · 1598 阅读 · 0 评论 -
动态规划求解TSP圈
求解思路: 动态规划的方法的最大难点就在于初始变量的确定,选择合适的初始变量才能更好的运用动态规划的方式解决问题。我在这里定义的变量就是d(i,S),设s出发点,其中i是一个点,而S是点的集合,这个变量的意思就是从i出发,经过S中的所有点一次且仅一次且回到出发点s的最小距离。当S为空时,就表示i到起始点s的权值。所以有如下的动态规划方程: d(i,S)=...原创 2019-05-31 10:51:03 · 836 阅读 · 0 评论