Vierfarbensatz Java-Implementierung der US-Karte

Ich versuche, jedem Zustand eine Farbe zuzuweisen, damit keine zwei benachbarten Zustände dieselbe Farbe haben (http://en.wikipedia.org/wiki/Four_color_theorem). Das Programm gibt jeden Zustand und seine Farbe aus.

Ich lese in einer Textdatei mit dem folgenden Format für 48 Status (2 sind nicht verbunden):

al,fl,ms,tn,ga
ar,la,tx,ok,mo,tn,ms
az,ca,nv,ut,nm
ca,az,nv,or
co,wy,ut,nm,ok,ks,ne
...

Beispiel:

Alabama berührt Florida, Mississippi, Tennessee und Georgia.

Arkansas berührt Louisiana, Texas usw.

Das ist mein Code bis jetzt:

MapColor.java    

import java.io.*;
import java.util.*;

public class MapColor {

    public static void main(String[] args) throws IOException {

        ArrayList <String> statestemp = new ArrayList <String> ();
        ArrayList <State> states = new ArrayList <State> ();

        // read in each line
        BufferedReader reader = new BufferedReader(new FileReader("usa.txt"));
        String line = null;
        while ((line = reader.readLine()) != null) {
            statestemp.add(line);
        }
        reader.close();

        // create all state objects and adjacencies
        for (int i = 0; i < statestemp.size(); i++) {
            State st = new State();
            String[] str = statestemp.get(i).split(",");
            st.setName(str[0]);
            for (int j = 1; j < str.length; j++) {
                st.addAdj(str[j]);
            }
            states.add(st);
        }

        // set colors


        // print out states and adjacencies
        for (State s : states) {
            System.out.println("Name: " + s.getName());
            System.out.println("Color: " + s.getColor());
            System.out.print("Adj: ");
            s.getAdj();
            System.out.println();
            System.out.println();
        }

    }
}

und

State.java

import java.util.ArrayList;

public class State {

    public String n = null;
    public int c = 0;
    public ArrayList <String> adj = new ArrayList <String> ();

    public String getName() {
        return n;
    }
    public void setName(String name) {
        this.n = name;
    }
    public int getColor() {
        return c;
    }
    public void setColor(int color) {
        this.c = color;
    }
    public void addAdj(String s) {
        this.adj.add(s);
    }
    public ArrayList <String> getAdj() {
        return this.adj;
    }
}

Ich bin an dem Punkt angelangt, an dem ich anfangen möchte, Farben zuzuweisen, aber ich bin nicht sicher, wie ich Vergleiche anstellen soll.

Anregungen wäre dankbar!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage