我在這裏有一個圖形着色算法中的函數,它將顏色分配給多個課程。但它隨機選擇,我想改進算法,並比基於可用顏色隨機選擇一個更有效地分配顏色。圖形着色算法 - 分配顏色
在這個函數中,N
是時間表的數量。
void create_schedule(int **graph, list *courses, int numcourses){
int i, j, k, col=0;
for(i=0; i<numcourses; i++){
for(j=0; j<N; j++){
for(k=0; k<i; k++){
if(graph[i][k] > 0 && courses[k].color == j) break;
}
//color j was not yet chosen by adjacent nodes
if(k >= i){
courses[i].color = j;
break;
}
}
//if there is no color available, choose randomly
if(j >= N){
col = rand()%N;
courses[i].color = col;
}
}
}
解釋會很好。
你的問題不清楚。 「你的意思是」更有效地指定顏色,而不是根據可用顏色隨意給予顏色「,你在這裏的含義是什麼」有效「?你想讓它跑得更快?你期待什麼樣的加速,你期望你能達到什麼目的? – amit
我想盡可能少使用顏色 – CrazyGirl
而您知道這個問題是NP-Complete?所以最佳解決方案將會花費指數時間(除非P = NP,這不太可能)? – amit