C++ 程序以实施 Vizing 定理
Vizing 定理指出,简单图的色指数要么是最大度,要么是最大度+1。此处,色指数表示给图的边着色所需的最大颜色数。
这是一个 C++ 程序,用于实施 Vizing 定理。
算法
Begin Take the number of vertices and edges as input. Take the vertex pair for the edges. function EdgeColor() : Color the graph edges. 1) Assign color to current edge as c i.e. 1 initially. 2) If the same color is occupied by any of the adjacent edges, then discard this color and go to flag again and try with the next color. End
示例
#include<iostream>
using namespace std;
void EdgeColor(int ed[][3], int e) {
int i, c, j;
for(i = 0; i < e; i++) {
c = 1; //Assign color to current edge 1 initially.
// If the same color is occupied by any of the adjacent edges,
// then discard this color and go to flag again and try next color.
flag:
ed[i][2] = c;
for(j = 0; j < e; j++) {
if(j == i)
continue;
if(ed[j][0] == ed[i][0] || ed[j][0] == ed[i][1] || ed[j][1] == ed[i][0] || ed[j][1] == ed[i][1]) {
if(ed[j][2] == ed[i][2]) {
c++;
goto flag;
}
}
}
}
}
int main() {
int i, n, e, j, max = -1;
cout<<"Enter the number of vertices of the graph: ";
cin>>n;
cout<<"Enter the number of edges of the graph: ";
cin>>e;
int ed[e][3], deg[n+1] = {0};
for(i = 0; i < e; i++) {
cout<<"\nEnter the vertex pair for edge "<<i+1;
cout<<"\nN(1): ";
cin>>ed[i][0];
cout<<"N(2): ";
cin>>ed[i][1];
//calculate the degree of each vertex
ed[i][2] = -1;
deg[ed[i][0]]++;
deg[ed[i][1]]++;
}
//find out the maximum degree.
for(i = 1; i <= n; i++) {
if(max < deg[i])
max = deg[i];
}
EdgeColor(ed , e);
cout<<"\nAccording to Vizing's theorem this graph can use maximum of "<<max+1<<" colors to generate a valid edge coloring.\n\n";
for(i = 0; i < e; i++)
cout<<"\nThe color of the edge between vertex N(1):"<<ed[i][0]<<" and N(2):"<<ed[i][1]<<" is: color"<<ed[i][2]<<".";
}输出
Enter the number of vertices of the graph: 4 Enter the number of edges of the graph: 3 Enter the vertex pair for edge 1 N(1): 1 N(2): 2 Enter the vertex pair for edge 2 N(1): 3 N(2): 2 Enter the vertex pair for edge 3 N(1): 4 N(2): 1 According to Vizing's theorem this graph can use maximum of 3 colors to generate a valid edge coloring. The color of the edge between vertex N(1):1 and N(2):2 is: color1. The color of the edge between vertex N(1):3 and N(2):2 is: color2. The color of the edge between vertex N(1):4 and N(2):1 is: color2.
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP