java.lang.Object
xyz.cofe.collection.graph.PathFinder<N,E>
- Type Parameters:
N- Тип вершиныE- Тип ребра
- All Implemented Interfaces:
java.util.Iterator<Path<N,E>>
public class PathFinder<N,E> extends java.lang.Object implements java.util.Iterator<Path<N,E>>
Поиск путей в графе.
Производит обход графа формируя возможные пути. Обход производится по крайчащим путям. Конечная вершина поиска определяется пользователем данного класса.
За один вызов next() выдает один возможный путь из указанной точки.
- Author:
- gocha
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Comparator<Path<N,E>>comparatorprotected Path.DirectiondirectionНаправление движенияprotected SingleDirectedGraph<N,E>graphГраф в котором производится поискprotected java.util.List<Path<N,E>>pathsСписок путей используемых в поиске. -
Constructor Summary
Constructors Constructor Description PathFinder(SingleDirectedGraph<N,E> graph, N start, Path.Direction direction, java.util.Comparator<Path<N,E>> comparator)КонструкторPathFinder(SingleDirectedGraph<N,E> graph, N start, Path.Direction direction, java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Конструктор -
Method Summary
Modifier and Type Method Description protected Path<N,E>append(Path<N,E> path, Edge<N,E> e)Добавляет ребро в конец путиprotected java.util.Comparator<Path<N,E>>createComparatorFrom(java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Создание Comparator для путиprotected Path<N,E>createPath()Создаает путьprotected java.util.List<Path<N,E>>createPathsList()Создает список путейprotected doublegetIntWeightOf(Path<N,E> path, java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Полчение веса путиprotected java.lang.Iterable<Edge<N,E>>getNextEdges(N n)Извлекает исходящие ребра/дуги из вершины n в соот. движению.booleanhasNext()Path<N,E>next()voidremove()
-
Field Details
-
graph
Граф в котором производится поиск -
direction
Направление движения -
paths
Список путей используемых в поиске. Используются их конечные вершины. -
comparator
-
-
Constructor Details
-
PathFinder
public PathFinder(SingleDirectedGraph<N,E> graph, N start, Path.Direction direction, java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Конструктор- Parameters:
graph- Одно направленный графstart- Начальная вершина путиdirection- Направление движенияgetWeight- Получение веса ребра, вес должен быть положительным или равен нулю
-
PathFinder
public PathFinder(SingleDirectedGraph<N,E> graph, N start, Path.Direction direction, java.util.Comparator<Path<N,E>> comparator)Конструктор- Parameters:
graph- Одно направленный графstart- Начальная вершина путиdirection- Направление движенияcomparator- Сравнение длины путей
-
-
Method Details
-
getIntWeightOf
protected double getIntWeightOf(Path<N,E> path, java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Полчение веса пути- Parameters:
path- ПутьgetWeight- Получение веса ребра- Returns:
- Вес пути
-
createComparatorFrom
protected java.util.Comparator<Path<N,E>> createComparatorFrom(java.util.function.Function<Edge<N,E>,java.lang.Double> getWeight)Создание Comparator для пути- Parameters:
getWeight- Получение веса ребра- Returns:
- Comparator
-
createPathsList
Создает список путей- Returns:
- Список путей
-
createPath
Создаает путь- Returns:
- Путь
-
append
Добавляет ребро в конец пути- Parameters:
path- Путьe- Ребро- Returns:
- Новый путь
-
getNextEdges
Извлекает исходящие ребра/дуги из вершины n в соот. движению.- Parameters:
n- Вершина- Returns:
- Ребра/дуги направления движения.
-
hasNext
public boolean hasNext()- Specified by:
hasNextin interfacejava.util.Iterator<N>
-
next
- Specified by:
nextin interfacejava.util.Iterator<N>
-
remove
public void remove()- Specified by:
removein interfacejava.util.Iterator<N>
-