Skip to content
Snippets Groups Projects
Verified Commit de9004ca authored by Enna Gerhard's avatar Enna Gerhard :levitate:
Browse files

Improve clique lower bound but take more time

parent df49d49d
No related branches found
No related tags found
1 merge request!30Maximum clique ennumeration
Pipeline #205322 failed
......@@ -3,6 +3,7 @@ package de.uni.bremen.grapa.library.algorithms;
import de.uni.bremen.grapa.library.graphs.api.DirectedEdge;
import de.uni.bremen.grapa.library.graphs.api.DirectedGraph;
import de.uni.bremen.grapa.library.graphs.api.Vertex;
import de.uni.bremen.grapa.library.helper.ConsoleHelper;
import de.uni.bremen.grapa.library.helper.GetUndirectedGraph;
import de.uni.bremen.grapa.library.helper.GraphRenaming;
import de.uni.bremen.grapa.library.helper.GraphRenamingResult;
......@@ -18,6 +19,7 @@ import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
......@@ -61,7 +63,7 @@ public class NativeMaximumCliqueEnnumerationSolver {
}
}
final ProcessBuilder processBuilder = new ProcessBuilder(solver.getAbsolutePath(), "--input-file=ignored", "--algorithm=tomita");
final ProcessBuilder processBuilder = new ProcessBuilder(solver.getAbsolutePath(), "--input-file=ignored", "--algorithm=adjlist");
final GraphRenamingResult rename = new GraphRenaming().rename(blueGraph);
final DirectedGraph<Vertex> renamedGraph = rename.renamedGraph();
try {
......@@ -75,7 +77,7 @@ public class NativeMaximumCliqueEnnumerationSolver {
final Scanner errors = new Scanner(process.getErrorStream());
while (errors.hasNext()) {
System.err.println(errors.nextLine());
ConsoleHelper.println("[MCE] " + errors.nextLine());
}
return rename.decipher(readResult);
......@@ -101,7 +103,19 @@ public class NativeMaximumCliqueEnnumerationSolver {
if (line.startsWith("NOTE") || line.startsWith("Reading")) {
continue;
}
System.out.println(line);
final String[] split = line.split(" ");
if (split.length <= 1) {
continue;
}
Set<Vertex> newClique = new HashSet<>();
for (final String entry : split) {
newClique.add(graph.getVertex(Integer.parseInt(entry) - offset));
}
result.add(newClique);
}
......@@ -118,7 +132,7 @@ public class NativeMaximumCliqueEnnumerationSolver {
private void writeProblem(final Process process, final DirectedGraph<Vertex> graph, final int offset) {
final PrintWriter writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(process.getOutputStream())));
writer.println(graph.maxId() + offset);
writer.println(graph.maxId()+1);
writer.println(graph.edgeCount() / 2);
for (final DirectedEdge edge : graph.getEdges()) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment