Übung Matching Probleme

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<document>Uebung.pdf</document>
Edge-Klasse:
<code>public class Edge {

    String v1;
    String v2;

    Edge(String v1, String v2) {
        this.v1 = v1;
        this.v2 = v2;
    }

    public boolean isNeighbour(Edge e) {
        if (e.v1 == this.v1 || e.v1 == this.v2 || e.v2 == this.v1 || e.v2 == this.v2) {
            return true;
        }
        return false;
    }
}</code>

Graph-Klasse
<code>public class Graph {

    private List<String> vertices = new ArrayList<>();
    private List<Edge> edges = new ArrayList<>();

    public void setEdges(Edge[] edges) {
        this.edges.clear();
        for (Edge e : edges) {
            this.edges.add(e);
        }
    }

    public void setEdges(String[] edges) {
        if (edges.length % 2 != 0) {
            System.out.println("wrong Array length");
        } else {
            for (int i = 0; i < edges.length; i++) {
                this.addEdge(new Edge(edges[i], edges[i + 1]));
                i++;
            }
        }
    }

    public void addEdge(Edge e) {
        this.edges.add(e);
        this.vertices.add(e.v1);
        this.vertices.add(e.v2);
    }

    public List<String> getVertices() {
        return this.vertices;
    }

    public List<Edge> getEdges() {
        return this.edges;
    }

    public List<Edge> getMaximum(Graph g) {
        List<Edge> e = g.edges;
        List<Edge> eDel = new ArrayList<>();
        List<Edge> m = new ArrayList<>();
        int index = e.size() - 1;
        while (!e.isEmpty()) {

            Edge element = e.get(index);
            m.add(element);
            e.remove(index);
            for (Edge elem : e) {
                if (element.isNeighbour(elem)) {
                    eDel.add(elem);
                }

            }
            e.removeAll(eDel);
            index = e.size() - 1;

        }
        return m;
    }

    
}</code>