Is there an algorithm that shortens paths (and removes nodes) based on edge cost? I can't put it into words too well so I hope these images sum it up well enough:
Algorithm to simplify/reduce graph
2.4k Views Asked by AlexT At
1
There are 1 best solutions below
Related Questions in GRAPH
- Find a MST in O(V+E) Time in a Graph
- Using chart and tooltip
- What clustering algorithms can I consider for graph?
- Clustering on Graph (using Boost Graph Library)
- How to set a domain on an axis and have the axis intervals not constant or take up different amount of interval spaces using d3
- sort graph by distance to end nodes
- Construct and label a uniform graph in NetworkX using dictionaries?
- Plot: Add legend that overlay several Frames
- Labelling nodes in networkx
- Plotting a data frame in R
- How does boost::subgraph work? Can we use filtered graph?
- How do I make a decaying oscilating function in python?
- Deserialize tree given inorder format?
- Having issues with D3 scale and data binding
- ArangoDB graph operations via REST API
Related Questions in GRAPH-THEORY
- How to get samples of different paths?
- Matlab code for regular graphs on given number of vertices
- Finding least Common ancestor in Binary Tree with o(h^2) for a change
- Nodes Connecting to and from Multiple Other Nodes (in JavaScript or Ruby preferably)
- Connecting components of a graph using data.table
- Semi-Eulerization Algorithm (for dummies)
- Algorithm - Balancing a disconnected bipartite graph
- Computing minimum path lengths in an SQL table
- How to split set of dependent steps into groups
- Algorithm for generating random network
- Find all sets of closed nodes in R
- What is the name of set of input vertices in Steiner tree?
- What is the correct vertex order of Prim algorithm from this graph?
- Finding all possible paths in graph
- How to access previous data value before binding the new value in d3.js?
Related Questions in GRAPH-ALGORITHM
- Find a MST in O(V+E) Time in a Graph
- Can Bellman-Ford algorithm be used to find shorthest path on a graph with only positive edges?
- How can i solve this the puzzle of algorithm regarding graduation
- Clustering on Graph (using Boost Graph Library)
- Algorithm to find k neighbors in a certain range?
- Graph algorithm to collect all edges which are on any path between two nodes
- Summarizing repeating gaph
- Heuristic to find the maximum weight independent set in an arbritary graph
- How to implement Transit Node Routing with Dijkstra graph search algorithm?
- Datastructure related. Find all arrays elements greater than or equal to given input
- Error in java: Exception in thread "main"
- Will multiple solutions for speeding up Dijkstra lower performance?
- When adding a random edge to a graph, which bridge edges are not bridge edges any longer?
- Shortest path in a directed graph with incorporating global path weight
- Why does the weighted quick union algorithm consider the sizes of the tree instead of their heights?
Related Questions in GRAPH-REDUCTION
- Semi-explicit parallelism in Haskell
- Efficient Transitive Reduction of Adjacency List DAG
- Haskell implemented without a stack?
- Reduce cyclic graph to tree (dependency graph-->tree)
- How to reason about space complexity in Haskell
- Graph reduction / Tricky space leak example
- Algorithm to simplify/reduce graph
- Tree or Graph contraction
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?


Are you looking for something out-of-the box or for algorithmic ideas on how to implement this yourself? I can help you with the latter.
What you want to do is called contraction of vertices which have exactly
2neighbours, i.e. that have degree2.For implementing this, do the following:
That is, if you have the following part of the graph:
u ---2--- v ---5--- wand apply the contraction, you end up withu ---7--- w.Just doing this iteratively until no vertex wit degree
2remains will transform the graph in the first picture into the graph in your second picture.The exact implementation details will, of course, depend on which data structure you use to represent your graph in Python (or any other language that is being used).