Archived
0

fix reuse vertex on paths finding

This commit is contained in:
iMoHax
2014-08-22 10:43:03 +04:00
parent c7ee010c4c
commit c44151f859
3 changed files with 15 additions and 9 deletions

View File

@@ -127,7 +127,6 @@ public class Graph<T extends Connectable<T>> {
LOG.trace("Search around"); LOG.trace("Search around");
for (Edge<T> next : source.getEdges()) { for (Edge<T> next : source.getEdges()) {
if (withRefill && Math.min(limit, maxDistance) < next.getLength() && !source.getEntry().canRefill()) continue; if (withRefill && Math.min(limit, maxDistance) < next.getLength() && !source.getEntry().canRefill()) continue;
if (head.isConnect(next.getTarget())) continue;
// target already added if source consist edge // target already added if source consist edge
if (next.isConnect(target)) continue; if (next.isConnect(target)) continue;
Path<T> path = head.connectTo(next.getTarget(), limit < next.getLength()); Path<T> path = head.connectTo(next.getTarget(), limit < next.getLength());

View File

@@ -160,8 +160,8 @@ public class MarketAnalyzerTest extends Assert {
analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15); analyzer.setJumps(3);analyzer.setMaxDistance(10);analyzer.setTank(15);
Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6); Collection<Path<Vendor>> paths = analyzer.getPaths(v10, v6);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6), TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6), Path.toPath(v10, v11, v6), Path.toPath(v10, v11, v10, v6),
Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v11, v6)); Path.toPath(v10, v8, v6), Path.toPath(v10, v8, v10, v6), Path.toPath(v10, v8, v11, v6));
paths = analyzer.getPaths(v10, v7); paths = analyzer.getPaths(v10, v7);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6, v7), Path.toPath(v10, v11, v6, v7), TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v6, v7), Path.toPath(v10, v11, v6, v7),
@@ -170,7 +170,8 @@ public class MarketAnalyzerTest extends Assert {
paths = analyzer.getPaths(v10, v8); paths = analyzer.getPaths(v10, v8);
TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v8), Path.toPath(v10, v11, v8), TestUtil.assertCollectionContainAll(paths, Path.toPath(v10, v8), Path.toPath(v10, v11, v8),
Path.toPath(v10, v11, v6, v8), Path.toPath(v10, v6, v8), Path.toPath(v10, v6, v11, v8)); Path.toPath(v10, v11, v6, v8), Path.toPath(v10, v6, v8), Path.toPath(v10, v6, v11, v8),
Path.toPath(v10, v11, v10, v8), Path.toPath(v10, v6, v10, v8));
paths = analyzer.getPaths(v10, v9); paths = analyzer.getPaths(v10, v9);
assertTrue(paths.isEmpty()); assertTrue(paths.isEmpty());

View File

@@ -237,7 +237,8 @@ public class GraphTest extends Assert {
paths = graph.getPathsTo(x4); paths = graph.getPathsTo(x4);
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4), Path.toPath(x5, x6, x4), Path.toPath(x5, x3, x4), TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4), Path.toPath(x5, x6, x4), Path.toPath(x5, x3, x4),
Path.toPath(x5, x6, x3, x4), Path.toPath(x5, x3, x2, x4), Path.toPath(x5, x3, x6, x4)); Path.toPath(x5, x3, x5, x4), Path.toPath(x5, x6, x3, x4), Path.toPath(x5, x3, x2, x4), Path.toPath(x5, x3, x6, x4),
Path.toPath(x5, x6, x5, x4));
paths = graph.getPathsTo(x5); paths = graph.getPathsTo(x5);
@@ -271,7 +272,8 @@ public class GraphTest extends Assert {
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x3, x2)); TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x3, x2));
paths = graph.getPathsTo(x6); paths = graph.getPathsTo(x6);
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), Path.toPath(x5, x3, x4, x6)); TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), Path.toPath(x5, x3, x5, x6),
Path.toPath(x5, x4, x5, x6), Path.toPath(x5, x3, x4, x6));
Path<Point> fast = graph.getFastPathTo(x2); Path<Point> fast = graph.getFastPathTo(x2);
assertEquals(fast, Path.toPath(x5, x3, x2)); assertEquals(fast, Path.toPath(x5, x3, x2));
@@ -292,12 +294,16 @@ public class GraphTest extends Assert {
paths = graph.getPathsTo(x2); paths = graph.getPathsTo(x2);
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x3, x4, x2), Path.toPath(x5, x3, x2), TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x3, x4, x2), Path.toPath(x5, x3, x2),
Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x4, x2), Path.toPath(x5, x4, x3, x2), Path.toPath(x5, x4, x2), Path.toPath(x5, x3, x5, x4, x2),
Path.toPath(x5, x6, x4, x2), Path.toPath(x5, x6, x4, x3, x2)); Path.toPath(x5, x6, x4, x2), Path.toPath(x5, x6, x4, x3, x2), Path.toPath(x5, x4, x3, x4, x2),
Path.toPath(x5, x4, x5, x4, x2), Path.toPath(x5, x6, x5, x4, x2), Path.toPath(x5, x3, x4, x3, x2));
paths = graph.getPathsTo(x6); paths = graph.getPathsTo(x6);
TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6), TestUtil.assertCollectionContainAll(paths, Path.toPath(x5, x6), Path.toPath(x5, x4, x6),
Path.toPath(x5, x3, x4, x6), Path.toPath(x5, x3, x6), Path.toPath(x5, x4, x3, x6)); Path.toPath(x5, x3, x4, x6), Path.toPath(x5, x3, x6), Path.toPath(x5, x4, x3, x6),
Path.toPath(x5, x3, x4, x3, x6), Path.toPath(x5, x3, x4, x5, x6), Path.toPath(x5, x3, x5, x6),
Path.toPath(x5, x3, x5, x4, x6), Path.toPath(x5, x4, x3, x4, x6), Path.toPath(x5, x4, x3, x5, x6),
Path.toPath(x5, x4, x5, x6), Path.toPath(x5, x4, x5, x4, x6));
paths = graph.getPathsTo(x7); paths = graph.getPathsTo(x7);
assertTrue(paths.isEmpty()); assertTrue(paths.isEmpty());