Учитывая матрицу смежности графа, мне нужно получить chromatic number (минимальное количество цветов, необходимых для рисования каждого узла графика, чтобы соседние узлы получали разные цвета) ,Мне нужен алгоритм для получения хроматического числа графа
Предпочтительно, это должен быть java-алгоритм, и мне не важно производительность.
Спасибо.
Редактировать: Недавно введено исправление, чтобы ответ был более точным. теперь он будет перепроверять свою позицию со своими предыдущими позициями.
Теперь возникает новый вопрос. Что будет лучше поднять его «цветной номер»? узел, в котором я стою, или узел, который я посещаю (спрашиваю, если я рядом с ним)?
public class Modelacion {
public static void main(String args[]) throws IOException{
// given the matrix ... which i have hidden the initialization here
int[][] matriz = new int[40][40];
int color[] = new int[40];
for (int i = 0 ; i<40;i++)
color[i]=1;
Cromatico c = new Cromatico(matriz, color);
}
}
import java.io.IOException;
public class Cromatico {
Cromatico(int[][]matriz, int[] color, int fila) throws IOException{
for (int i = 0; i<fila;i++){
for (int j = 0 ; j<fila;j++){
if (matriz[i][j] == 1 && color[i] == color [j]){
if (j<i)
color [i] ++;
else
color [j] ++;
}
}
}
int numeroCromatico = 1;
for (int k = 0; k<fila;k++){
System.out.print(".");
numeroCromatico = Math.max(numeroCromatico, color[k]);
}
System.out.println();
System.out.println("el numero cromatico del grafo es: " + numeroCromatico);
}
}
Что вы думаете? –
Как бы вы получили значение вручную? независимо от вашего ответа, есть ваш ответ! – atk
@atk, чтобы получить кроматическое число графа с учетом матрицы смежности. –