Graphs
https://www.youtube.com/watch?v=7MQ19mADAV8 Graph Theory With Python
https://www.youtube.com/watch?v=xsPdrpS5CBM C++
https://planarity.org/
https://easy-graph.github.io/
Machine learning on graphs: https://arxiv.org/abs/2301.08210?fbclid=IwAR0gys4S_i3tt4FL0i6pP-MerK8hJ14CogL-HOFd6B_5iD8QSF2vzYXmyf4
https://habr.com/ru/company/ruvds/blog/705368/
dot file visualizer in browser http://www.webgraphviz.com/
https://www.yworks.com/products/yed. Graph editor
https://habr.com/ru/company/otus/blog/675730/ Способы хранения графа в памяти компьютера
https://habr.com/ru/post/669980/ Python NetworkX
https://www.youtube.com/watch?v=oQL4E1gK3VU
Jure Leskovec: "Large-scale Graph Representation Learning"
https://news.ycombinator.com/item?id=29966107 graphviz
https://cs.stanford.edu/people/jure/
https://www.pyg.org/
PyG is a library built upon PyTorch to easily write and train Graph Neural Networks
https://www.youtube.com/watch?v=wSWBk0LFvPc
https://habr.com/ru/users/dmagin/posts/
RetworkX is NextworkX implemented in Rust - can be called from python
https://qiskit.org/documentation/retworkx/
https://docs.rs/retworkx/0.8.0/retworkx/
https://github.com/Qiskit/retworkx
pip install retworkx
https://news.ycombinator.com/item?id=28499999
https://github.com/graphistry/graph-app-kit StreamLit + GUI for Graphs
Why graph dbs are not popular?
https://lobste.rs/s/pp5blh/why_are_graph_databases_not_more_popular
https://www.youtube.com/watch?v=09_LlHjoEiY
Algo
http://breandan.net/2020/06/30/graph-computation/
https://habr.com/ru/company/ods/blog/464715/ Large Graph Visualization
https://www.youtube.com/watch?v=Q61wpfFnYYo . Algo on Graphs (ru)
https://habr.com/ru/post/491846/ . find if 2 graphs are isomorphic
https://medium.com/basecs/a-gentle-introduction-to-graph-theory-77969829ead8
https://habr.com/ru/post/444828/ . A* algo
http://courses.csail.mit.edu/6.889/fall11/lectures/ MIT graph algo class
https://www.coursera.org/learn/big-data-graph-analytics . Cousera
https://habr.com/ru/post/471652/ . C++ graph libraries review
https://github.com/x899/graph theory in python
https://stackabuse.com/graphs-in-python-minimum-spanning-trees-prims-algorithm
https://www.python-course.eu/graphs_python.php
""" A Python Class
A simple Python graph class, demonstrating the essential
facts and functionalities of graphs.
Taken from https://www.python-course.eu/graphs_python.php
Changed the implementation a little bit to include weighted edges
"""
class Graph(object):
def __init__(self, graph_dict=None):
""" initializes a graph object
If no dictionary or None is given,
an empty dictionary will be used
"""
if graph_dict == None:
graph_dict = {}
self.__graph_dict = graph_dict
def vertices(self):
""" returns the vertices of a graph """
return list(self.__graph_dict.keys())
def edges(self):
""" returns the edges of a graph """
return self.__generate_edges()
def add_vertex(self, vertex):
""" If the vertex "vertex" is not in
self.__graph_dict, a key "vertex" with an empty
dict as a value is added to the dictionary.
Otherwise nothing has to be done.
"""
if vertex not in self.__graph_dict:
self.__graph_dict[vertex] = {}
def add_edge(self, edge,weight=1):
""" assumes that edge is of type set, tuple or list
"""
edge = set(edge)
(vertex1, vertex2) = tuple(edge)
if vertex1 in self.__graph_dict:
self.__graph_dict[vertex1][vertex2] = weight
else:
self.__graph_dict[vertex1] = {vertex2:weight}
if vertex2 in self.__graph_dict:
self.__graph_dict[vertex2][vertex1] = weight
else:
self.__graph_dict[vertex2] = {vertex1:weight}
def __generate_edges(self):
""" A static method generating the edges of the
graph "graph". Edges are represented as sets
with one (a loop back to the vertex) or two
vertices
"""
edges = []
for vertex in self.__graph_dict:
for neighbour,weight in self.__graph_dict[vertex].iteritems():
if (neighbour, vertex, weight) not in edges:
edges.append([vertex, neighbour, weight])
return edges
def __str__(self):
res = "vertices: "
for k in self.__graph_dict:
res += str(k) + " "
res += "\nedges: "
for edge in self.__generate_edges():
res += str(edge) + " "
return res
def adj_mat(self):
return self.__graph_dict
Usage:
g = { "a" : {"d":2},
"b" : {"c":2},
"c" : {"b":5, "d":3, "e":5}
}
graph = Graph(g)
print("Vertices of graph:")
print(graph.vertices())
print("Edges of graph:")
print(graph.edges())
print("Add vertex:")
graph.add_vertex("z")
print("Vertices of graph:")
print(graph.vertices())
print("Add an edge:")
graph.add_edge({"a","z"})
print("Vertices of graph:")
print(graph.vertices())
print("Edges of graph:")
print(graph.edges())
print('Adding an edge {"x","y"} with new vertices:')
graph.add_edge({"x","y"})
print("Vertices of graph:")
print(graph.vertices())
print("Edges of graph:")
print(graph.edges())
Vertices of graph:
['a', 'c', 'b']
Edges of graph:
[['a', 'd', 2], ['c', 'b', 5], ['c', 'e', 5], ['c', 'd', 3], ['b', 'c', 2]]
Add vertex:
Vertices of graph:
['a', 'c', 'b', 'z']
Add an edge:
Vertices of graph:
['a', 'c', 'b', 'z']
Edges of graph:
[['a', 'z', 1], ['a', 'd', 2], ['c', 'b', 5], ['c', 'e', 5], ['c', 'd', 3], ['b', 'c', 2], ['z', 'a', 1]]
Adding an edge {"x","y"} with new vertices:
Vertices of graph:
['a', 'c', 'b', 'y', 'x', 'z']
Edges of graph:
[['a', 'z', 1], ['a', 'd', 2], ['c', 'b', 5], ['c', 'e', 5], ['c', 'd', 3], ['b', 'c', 2], ['y', 'x', 1], ['x', 'y', 1], ['z', 'a', 1]]
Knowledge graph
https://terminusdb.com/ . Graph database
A large number of knowledge graphs have been created, including
YAGO, DBpedia, NELL, Freebase [7], and the Google Knowledge Graph [8]
Semantic Web community creating a “web of data”
that is readable by machines [14]. While this vision of the
Semantic Web remains to be fully realized, parts of it have
been achieved. In particular, the concept of linked data [15, 16]
has gained traction, as it facilitates publishing and interlinking
data on the Web in relational form using the W3C Resource
Description Framework (RDF) [17, 18]. (For an introduction
to knowledge representation, see e.g. [11, 19, 20]).
In this article, we will loosely follow the RDF standard and
represent facts in the form of binary relationships, in particular
(subject, predicate, object) (SPO) triples, where subject and
object are entities and predicate is the relation between
them
https://arxiv.org/pdf/1503.00759.pdf
https://towardsdatascience.com/extracting-knowledge-from-knowledge-graphs-e5521e4861a0
Graph Databases
https://medium.com/terminusdb/why-graph-will-win-703373bb5c41
https://www.reddit.com/r/programming/comments/fcc9cl/20_years_from_now_nongraph_databases_will_be/
https://news.ycombinator.com/item?id=22051271 https://nebula-graph.io/ . C++ graph DB
https://blog.dgraph.io/
https://news.ycombinator.com/item?id=20575502 . dGraph
https://www.zdnet.com/article/you-can-go-your-own-graph-database-way-dgraph-secures-115m-to-pursue-its-opinionated-path/
https://grakn.ai/
https://www.tigergraph.com/ . TigerGraph
https://docs.ampligraph.org/en/latest/
https://www.ebayinc.com/stories/blogs/tech/beam-a-distributed-knowledge-graph-store/ . Beam (Apache)
https://blog.dgraph.io/post/why-google-needed-graph-serving-system/
https://stats.stackexchange.com/questions/351231/knowledge-graph-how-to-get-into-it
https://mlwhiz.com/blog/2018/12/07/connected_components/
https://www.meetup.com/ko-KR/Graph-Database-in-Silicon-Valley/
https://github.com/Alnaimi-/database-benchmark . Vertica vs Neo4j
https://bitnine.net/
https://news.ycombinator.com/item?id=18352754 . Graph database discussion
http://heyrod.com/projects/gv-cookbook.html . GraphViz CookBook
https://news.ycombinator.com/item?id=18527104 . Cytoscape.js
http://sigmajs.org/
https://github.com/anvaka/VivaGraphJS
https://blog.evjang.com/2018/08/dijkstras.html
https://www.oreilly.com/ideas/fishing-for-graphs-in-a-hadoop-data-lake
https://news.ycombinator.com/item?id=16230910 - discussion
http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html
https://mrpandey.github.io/d3graphTheory/
https://liveramp.com/engineering/efficiently-analyzing-600-billion-edge-graph-real-time/
http://ontodia.org/ platform to build web applications for exploration and visualization of graph data
https://www.blazegraph.com/
https://aws.amazon.com/neptune/
http://book.validatingrdf.com/index.html
Graph Search and Visualization in JS
https://github.com/anvaka/ngraph.path . JS graph
Quadtree
KD-Tree(K-мерное дерево), специальная 'геометрическая' структура данных, которая позволяет разбить K-мерное пространство на 'меньшие части', посредством сечения этого самого пространства гиперплоскостями(K > 3), плоскостями (K = 3), прямыми (K = 2
https://habrahabr.ru/post/312882/
Метод оптимизации Нелдера — Мида. Python
https://habrahabr.ru/post/332092/
https://habrahabr.ru/post/344378/
https://jeremykun.com/2017/11/08/binary-search-on-graphs/
http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html
https://www.voxxed.com/2017/03/handling-billions-of-edges-graph-database/
https://blog.grakn.ai/modelling-data-with-hypergraphs-edff1e12edf0
https://medium.com/@chetcorcos/introduction-to-parsers-644d1b5d7f3d
https://python-graph-gallery.com/
Load balancing
https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236
https://news.ycombinator.com/item?id=16151879
JavaScript Graphs WebGL
https://github.com/ericdrowell/ElGrapho
https://github.com/graphistry/pygraphistry
https://github.com/alx/parasol
https://news.ycombinator.com/item?id=19598372
Maps
https://andrewcooke.github.io/choochoo/rtree . spatial search
https://habrahabr.ru/post/346714/ OpenStreetMap
https://news.ycombinator.com/item?id=16149725 LeafLet
Search
midium.com/@forwidur Max Grigorev
https://habrahabr.ru/post/346884/ Reindexer - text search
https://habrahabr.ru/post/354034/ Text search
https://news.ycombinator.com/item?id=18582469
https://dzone.com/articles/how-to-build-a-google-search-autocomplete How to Build a Google Search Autocomplete
https://dzone.com/articles/searching-shouldnt-be-so-hard
https://news.ycombinator.com/item?id=15676681 Search
https://www.youtube.com/watch?v=1-Xoy5w5ydM BitFunnel
https://dl.acm.org/citation.cfm?id=3080789 BitFunnel