Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar11 / Graph-Impl / MatrixGraph
diff options
context:
space:
mode:
Commit7eee5a78005a9a569186d2c8b4b645a818ab9bf1 (patch)
Author
 Stoycho Kyosev <skyosev@192.168.100.17>
2024-10-06 07:04:44 -0400
Committer
 Stoycho Kyosev <skyosev@192.168.100.17>
2024-10-06 07:04:44 -0400
Files84594e0af29cefa5aae76ace5f8eb81484400e31 /Seminar11/Graph-Impl/MatrixGraph
Data-structures-and-algorithms-7eee5a78005a9a569186d2c8b4b645a818ab9bf1.tar
Data-structures-and-algorithms-7eee5a78005a9a569186d2c8b4b645a818ab9bf1.tar.gz
Data-structures-and-algorithms-7eee5a78005a9a569186d2c8b4b645a818ab9bf1.zip
Parent0841635826cb03c0e74cd75ec3c97c4c3b594d8b (diff)
Cleanup
2 files changed, 0 insertions, 149 deletions
-rw-r--r--Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.cpp97
-rw-r--r--Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.h52
diff --git a/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.cpp b/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.cpp
deleted file mode 100644
index b5835f8..0000000
--- a/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#include"MatrixGraph.h"
-
-using vertex_t = MatrixGraph::vertex_t;
-using weight_t = MatrixGraph::weight_t;
-
-MatrixGraph::MatrixGraph(size_t v) {
- data = std::vector<std::vector<weight_t>>(v, std::vector<weight_t>(v, 0));
-}
-
-bool MatrixGraph::validVertex(vertex_t v) const {
- return v < data.size();
-}
-
-bool MatrixGraph::adjacent(vertex_t from, vertex_t to) const {
- if(!validVertex(from) || !validVertex(to))
- throw "Invalid vertex";
-
- return data[from][to] > 0;
-}
-
-void MatrixGraph::addDirectedEdge(vertex_t from, vertex_t to, weight_t w) {
- if(!validVertex(from) || !validVertex(to))
- throw "Invalid vertex";
-
- data[from][to] = w;
-}
-
-void MatrixGraph::addEdge(vertex_t from, vertex_t to, weight_t w) {
- addDirectedEdge(from, to, w);
- addDirectedEdge(to, from, w);
-}
-
-void MatrixGraph::addVertex() {
- for(auto& v : data)
- v.push_back(0);
-
- data.push_back(std::vector<weight_t>());
-}
-
-void MatrixGraph::removeEdge(vertex_t from, vertex_t to) {
- if(!validVertex(from) || !validVertex(to))
- throw "Invalid vertex";
-
- data[from][to] = 0;
-}
-
-void MatrixGraph::removeVertex(vertex_t v) {
- if(!validVertex(v))
- throw "Invalid vertex";
-
- data.erase(data.begin() + v);
-
- for(auto& vertex : data)
- vertex.erase(vertex.begin() + v);
-}
-
-weight_t MatrixGraph::getWeight(vertex_t from, vertex_t to) const {
- if(!validVertex(from) || !validVertex(to))
- throw "Invalid vertex";
-
- return data[from][to];
-}
-
-std::vector<vertex_t> MatrixGraph::getSuccessors(vertex_t from) const {
- if(!validVertex(from))
- throw "Invalid vertex";
-
- std::vector<vertex_t> result;
-
- for (size_t i = 0; i < data.size(); i++)
- if(data[from][i] > 0)
- result.push_back(i);
-
- return result;
-}
-
-std::vector<vertex_t> MatrixGraph::getPredecessors(vertex_t from) const {
- if(!validVertex(from))
- throw "Invalid vertex";
-
- std::vector<vertex_t> result;
-
- for (size_t i = 0; i < data.size(); i++)
- if(data[i][from] > 0)
- result.push_back(i);
-
- return result;
-}
-
-std::vector<vertex_t> MatrixGraph::adjacent(vertex_t from) const {
- return getSuccessors(from);
-}
-
-
-size_t MatrixGraph::vertexCount() const {
- return data.size();
-} \ No newline at end of file
diff --git a/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.h b/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.h
deleted file mode 100644
index aade1a1..0000000
--- a/Seminar11/Graph-Impl/MatrixGraph/MatrixGraph.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Ориентиран тегловен граф представен чрез матрица на съседство.
-
-Плюсове:
-* Лесна имплементация
-* Проверка за ребро, премахване на ребро, добавяне на ребро са O(1)
-
-Минуси:
-* Паметта винаги е O(|V|^2)
-* Намирането на предшественици (наследници) или в неориентирания случай на съседи отнема O(|V|) време.
-
-weight_t => тип, чрез който представяме тежест
-vertex_t => тип, чрез който представяме връх
-*/
-
-#ifndef GRAPH_IMPL_H
-#define GRAPH_IMPL_H
-
-#include<vector>
-#include<cstddef>
-
-class MatrixGraph {
- public:
- using vertex_t = unsigned int;
- using weight_t = unsigned int;
-
- private:
- std::vector<std::vector<weight_t>> data;
-
- public:
- MatrixGraph(size_t);
-
- void addVertex();
- void removeVertex(vertex_t);
-
- void addDirectedEdge(vertex_t from, vertex_t to, weight_t w);
- void addEdge(vertex_t from, vertex_t to, weight_t w);
- void removeEdge(vertex_t from, vertex_t to);
-
- bool validVertex(vertex_t) const;
- weight_t getWeight(vertex_t, vertex_t) const;
-
- size_t vertexCount() const;
- bool adjacent(vertex_t from, vertex_t to) const;
-
- std::vector<vertex_t> getSuccessors(vertex_t) const;
- std::vector<vertex_t> getPredecessors(vertex_t) const;
- // Same as getSuccessors, here for interface purposes.
- std::vector<vertex_t> adjacent(vertex_t) const;
-};
-
-#endif \ No newline at end of file