Я пытаюсь написать код, который будет использовать четырехцветную теорему для областей цвета, определенных матрицей смежности. Матрица смежности будет выглядеть следующим образом:Четырехцветная теорема
A B C D
A 0 1 0 1
B 1 0 1 0
C 0 1 0 1
D 1 0 1 0
Так для этого примера А не смежна с собой или C, но она находится рядом с B и D.
Программа Я пишу должен использовать рекурсию и back-tracing, чтобы назначить 4 цвета (или меньше) определенным областям.
До сих пор мой алгоритм выглядит следующим образом:
global int[] colors = <region one color,region two, region three, region four >
public static int color(row,column)
if out of bounds ??
loop(!colored)
{
case 1: are any adjacent regions this color? assign
case 2: are any adjacent regions this color? assign.
case 3: are any adjacent regions this color? assign.
case 4: are any adjacent regions this color? assign.
case 5: if nothing found, steal closest (in #) region's color and call method from there
}
Но у меня есть несколько вопросов:
- Что бы этот метод возвращения?
- Будет ли это работать и иметь рекурсию/обратную трассировку, как это должно быть?
- Что бы вывести, если данная строка/столбец выходит за пределы?
Спасибо!
Возможно, этот вопрос будет лучше помечен алгоритмом вместо java или будет более подходящим для программистов.se? –
Я до сих пор довольно новичок в переполнении стека, но некоторые из моих вопросов задают вопрос о части java. – Rvngizswt