GraphStore.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import Vertex from "./Vertex.js";
  2. import Edge from "./Edge.js";
  3. /**
  4. * Класс, описывающий способ хранения графа
  5. */
  6. export default interface GraphStore<V extends Vertex, E extends Edge<V>> {
  7. /**
  8. * Получить вершину из графа по её уникальному идентификатору
  9. * @param id Уникальный идентификатор вершины
  10. */
  11. getVertex(id: V["id"]): V|null;
  12. /**
  13. * Получение всех списков вершин в графе
  14. */
  15. getAllVertices(): V[];
  16. /**
  17. * Получить ребро из графа по её уникальному идентификатору
  18. * @param id Уникальный идентификатор ребра
  19. */
  20. getEdge(id: E["id"]): E|null;
  21. /**
  22. * Получение всех рёбер в графе
  23. */
  24. getAllEdges(): E[];
  25. /**
  26. * Получить вершины, смежные с указанной
  27. * @param id Уникальый идентификатор вершины, для которой необходимо найти смежные вершины
  28. */
  29. getAdjacentVertices(id: V["id"]): V[];
  30. /**
  31. * Получить список вершин графа, из которых можно попасть в данную вершину
  32. * @param id Уникальный идентификатор вершины, для которой нужно посчитать количество "входящих" вершин
  33. */
  34. getInputs(id: V["id"]): V[];
  35. /**
  36. * Получить список вершин графа, в которые можно попасть из данной веришны
  37. * @param id Уникальный идентификатор вершины, для которой нужно найти количество "исходящих" вершин
  38. */
  39. getOutputs(id: V["id"]): V[];
  40. /**
  41. * Получить ребра, инцидентные вершине
  42. * @param id Уникальный идентификатор вершины, для которой нужно получить инцидентные ребра
  43. */
  44. getIncidentEdges(id: V["id"]): E[];
  45. /**
  46. * Получение степени вершины в графе
  47. * @param id Уникальный идентификатор вершины, степень которой необходимо найти
  48. */
  49. getVertexDegree(id: V["id"]): number;
  50. }