当前位置:首页 » 操作系统 » 图的算法

图的算法

发布时间: 2022-01-10 10:58:22

‘壹’ 图的同构算法是什么

提出了图的同构判定新算法,即关联度序列法和黄金分割关联度序列法.后者的计算时间复杂性远远低于2N(N为图的顶点数),已接近于多项式时间复杂性.该算法可应用于很多能用图来描述的模式识别等实际问题

‘贰’ 数据结构中图的建立及算法实现

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 20
struct ArcNode
{
int adjvex;
struct ArcNode *nextarc;
};
struct Vnode
{
int data;
struct ArcNode *firstarc;
};
struct Vnode AdjList[MaxSize];
int m,n,v,cord;
void main()
{
void creatgraph(struct Vnode A[MaxSize]);
void dfs(struct Vnode A[MaxSize]);
do
{
printf("\n 主菜单");
printf("\n 1 建立无向图的邻接表");
printf("\n 2 按深度遍历图");
printf("\n 3 结束程序运行");
printf("\n-----------------------------------");
printf("\n 请输入您的选择 1, 2, 3 -->");
scanf("%d",&cord);
switch(cord)
{
case 1:
creatgraph(AdjList);
break;
case 2:
dfs(AdjList);
break;
case 3:
exit(0);
}
}while(cord<=3);
}//main end
void creatgraph(struct Vnode A[MaxSize])
{
int i,j,k;
struct ArcNode *p;
printf("input arces and vexes:");
scanf("%d %d",&m,&n);
for(k=0;k<n;k++)
{
printf("\ninput arc:");
scanf("%d%d",&i,&j);
p=(struct ArcNode*)malloc(sizeof(struct ArcNode));
p->adjvex=j;
p->nextarc=A[i-1].firstarc;
A[i-1].firstarc=p;
p=(struct ArcNode*)malloc(sizeof(struct ArcNode));
p->adjvex=i;
p->nextarc=A[j-1].firstarc;
A[j-1].firstarc=p;
}
printf("\n");
for(k=0;k<n;k++)
{
printf("%d",A[k].data);
p=A[k].firstarc;
while(p)
{
printf("%d",p->adjvex);
p=p->nextarc;
}
printf("\n");
}
}///creatgraph end
void dfs(struct Vnode A[MaxSize])
{
struct ArcNode *p,*ar[MaxSize];
int x,i,y,top=-1;
int visited[MaxSize];
for(i=0;i<n;i++)
visited[i]=0;
printf("\ninput x:");
scanf("%d",&x);
printf("%d",x);
visited[x-1]=1;
p=A[x-1].firstarc;
while((p)||(top>=0))
{
if(!p)
{
p=ar[top];
top--;
}
y=p->adjvex;
if(visited[y-1]==0)
{
visited[y-1]=1;
printf("->%d",y);
p=p->nextarc;
if(p)
{
top++;
ar[top]=p;
}
p=A[y-1].firstarc;
}
else p=p->nextarc;
}
}

‘叁’ 图的算法中,

负圈又称负环,就是说一个全部由负权的边组成的环,这样的话不存在最短路,因为每在环中转一圈路径总长就会边小.

‘肆’ 求一个图的最大完全子图的算法

最大完全子图,超超的地址我打不开
用度的方法是不行的,因为完全子图可能每一个结点的度都不一样

我想能不能这样:
从某一个结点开始深度优先遍历,同时用一个路径数组记录下遍历走过的每一个结点,每进入遍历结点,先看看该结点的邻接点是否包含已知路径上的所有结点,若是,则把该结点加入路径数组,继续从新结点遍历;若不是,回溯到上一结点;这样直到无法回溯(另外设置一个访问状态数组VisitIN[],起始结点的所有邻接点VisitIN值为1就无法回溯了)就找到一个完全子图

把起始结点访问状态Visit[]改为1,继续从下一结点出发重复上述过程,直到找到最大的完全子图。(算法的关键是判断某一结点的邻接点是否包含路径数组的所有结点)

不过这样做复杂度是高的了,我还没想到更好的方法。

各点度不一样不要紧,可以降低一级,再查。如下图中,最大度数为3,先找是否有另外3个3度点且都1-1相连,发现没有,就降为寻找有否3个2度点相互都1-1相连,这样就找到了。

2
*
/ \
/ \
*-----*----*----*
2 3 2 1

‘伍’ 程序框图算法的特点是什么

①只有一个入口;

②只有一个出口.
菱形判断框有两个出口,而条件结构只有一个出口,不要将菱形框的出口和条件结构的出口混为一谈;

③结构内的每一部分都有机会被执行到.
即对每一个框来说都应当有一条从入口到出口的路径通过它;

④结构内不存在死循环.
在程序框图中不允许有死循环出现.
①顺序结构的特点是:算法按照书写顺序执行;

②条件结构的特点是:算法中需要进行判断,判断的结果决定后面的步骤;

③循环结构的三个要素:循环变量、循环体和循环终止条件.

‘陆’ 图像处理的算法有哪些

图像处理基本算法操作从处理对象的多少可以有如下划分:
一)点运算:处理点单元信息的运算
二)群运算:处理群单元 (若干个相邻点的集合)的运算
1.二值化操作
图像二值化是图像处理中十分常见且重要的操作,它是将灰度图像转换为二值图像或灰度图像的过程。二值化操作有很多种,例如一般二值化、翻转二值化、截断二值化、置零二值化、置零翻转二值化。
2.直方图处理
直方图是图像处理中另一重要处理过程,它反映图像中不同像素值的统计信息。从这句话我们可以了解到直方图信息仅反映灰度统计信息,与像素具体位置没有关系。这一重要特性在许多识别类算法中直方图处理起到关键作用。
3.模板卷积运算
模板运算是图像处理中使用频率相当高的一种运算,很多操作可以归结为模板运算,例如平滑处理,滤波处理以及边缘特征提取处理等。这里需要说明的是模板运算所使用的模板通常说来就是NXN的矩阵(N一般为奇数如3,5,7,...),如果这个矩阵是对称矩阵那么这个模板也称为卷积模板,如果不对称则是一般的运算模板。我们通常使用的模板一般都是卷积模板。如边缘提取中的Sobel算子模板。

‘柒’ 有关图划分算法

首先,最多划分为两部分,因为如果大于等于3部分,那么将其中任意两个部分合并可以优化答案。
这样问题就是求无向图的边连通度的问题了,可以用网络流来解决。具体算法可以参考《图论算法与信息学竞赛》这本书。

‘捌’ 数据结构图的算法

‘玖’ 有向图的算法

楼上的真是,估计没明白楼主意思吧。。。明显可以证明这个图是完全强连通的,这个也不难看出来。
但是这个问题本身比较怪异,开始怀疑是不是 NP。

初步感觉,应该归约成某种网络流吧。。

我再想想吧。。想到了再贴上来吧,楼主放这么重本,不想出来也不好意思收啊。。

‘拾’ 什么是图计算

简单地说就是利用设计单位已经有的图形计算处处这个图形中各个构建的量,然后汇总,其实就是为了计算造价用得。可以用手算,也可以用软件计算,

热点内容
路由器哪里改密码 发布:2024-12-25 00:53:18 浏览:658
编译原理数组的翻译三地址代码 发布:2024-12-25 00:53:18 浏览:891
全新哈弗h6哪个车型配置够用 发布:2024-12-25 00:51:35 浏览:887
安卓系统部落冲突如何用微信登录 发布:2024-12-25 00:50:08 浏览:363
oracle启动数据库服务 发布:2024-12-25 00:50:03 浏览:65
手机游戏源码开发 发布:2024-12-25 00:48:09 浏览:401
直流屏密码是多少 发布:2024-12-25 00:28:26 浏览:655
汽车配置怎么看马力 发布:2024-12-25 00:23:49 浏览:83
ipad访问权限 发布:2024-12-25 00:23:01 浏览:690
rxjava上传 发布:2024-12-25 00:22:59 浏览:306