Computing Sections of a Graph Which Can Be Removed By Removing Two Edges

Click For Summary

Discussion Overview

The discussion revolves around identifying sections of a graph that can be removed by deleting two edges, specifically in the context of a graph representing atomic bonds in silica. Participants explore algorithms and methods for efficiently computing these sections, considering the dynamic nature of the graph over time.

Discussion Character

  • Exploratory
  • Technical explanation
  • Mathematical reasoning

Main Points Raised

  • One participant seeks an efficient algorithm for identifying graph sections removable by two edge deletions, noting the graph's representation of atomic bonds.
  • Another suggests converting edges to vertices and testing for 3-vertex-connectedness, referencing external resources for further exploration.
  • A participant provides details about the graph's size and suggests an iterative approach for larger graphs, proposing an alternative method of removing vertices with only two edges instead of edges.
  • One participant proposes marking full chains of atoms starting from those with two connections, while also considering the possibility of more complex structures within those chains.
  • Another participant expresses confusion about determining when to stop marking chains, highlighting the potential for clusters of atoms with varying bond numbers.
  • A later reply suggests recursively checking connections to identify smaller clusters and outlines criteria for distinguishing between chains and larger structures.
  • One participant clarifies the meaning of 'N' in their context, relating it to the maximum number of atoms in small clusters as part of a larger chain.

Areas of Agreement / Disagreement

Participants present various approaches and methods without reaching a consensus on a single solution. Multiple competing views on how to identify removable sections and handle the complexity of the graph remain evident.

Contextual Notes

Participants mention limitations in MATLAB tools for determining k-vertex-connectedness and switching vertices and edges, which may affect the proposed methods. The dynamic nature of the graph and the potential for varying structures add complexity to the discussion.

person123
Messages
326
Reaction score
52
TL;DR
I would like to write an algorithm to do this in MATLAB to analyze a network of atomic bonds.
Hi. I have graph which I am analyzing in MATLAB. I would like to determine sections of the graph which could be removed from the rest of the graph by removing only 2 edges. (The graph represents the network of atomic bonds from a simulation of silica, and I am attempting to locate strands of atoms). Is there an efficient algorithm for computing this? Here is a sketch of what I mean:
graph.jpg

Thank you!
 
Physics news on Phys.org
How large is your graph?

Convert edges to vertices and vertices to edges (connecting all associated new vertices with each other) and test if the new graph is 3-vertex-connected:

https://mathworld.wolfram.com/BiconnectedGraph.html
https://reference.wolfram.com/language/ref/KVertexConnectedGraphQ.html

No idea about the runtime of that algorithm, and no idea if Matlab has one on its own.

That's only telling you if such a structure exists, but presumably somewhere in the code it also identifies these structures.

Looking for "2-edge connected" as keyword might show something as well.
 
Last edited:
The graph has (approximately) 2500 vertices and 6500 edges. The graph changes over time, so it should be done iteratively for each step (125 in my case). I plan on having larger graphs in the future however, maybe on the order of 10s or even 100s of thousands of vertices. (I may have to use my university's computing cluster for this).

I can't find any tools in MATLAB for either switching vertices and edges or determining k-vertex-connectedness though.

I think an easier alternative might be to determine sections which can be removed from the graph by removing two vertices which each only have two edges. This is of course a different problem, but I think if I had strands of atoms, there would be atoms on either side of the strand only bonded to two other atoms. Here's a sketch:
graph.jpg


For this problem, I think I could iterate through all pairs of vertices which have two edges (there shouldn't be many vertices with only two edges) and see if their removal leads to separate graphs.

The smaller subgraph (the one which is the strand of atoms) would like have multiple vertices with only two edges (it might actually be the only place where there's vertices with two edges). Because of that, I think I could remove all vertices with two edges which are within the smaller subgraph from the iteration process to improve efficiency. (They would just find strands which are part of a larger strand). Here is a sketch:
graph dont check.jpg


I think this is something I could code easily (removing vertices and finding separate graphs is built into MATLAB).

Does the approach seem reasonable?
 
Chains of atoms certainly help. Start with atoms with only two connections, extend them to mark the full chain (this is trivial as you can just keep following the connections), then check pairs of chains.

It should also be possible to make a meta-graph out of densely connected regions as vertices with these chains as edges between them.
 
mfb said:
extend them to mark the full chain (this is trivial as you can just keep following the connections)
I'm a bit confused about this step. How would it know when to stop? I'm not assuming these are chains of single atoms. It could be a cluster of atoms like shown:
20210111_205729.jpg
My idea was to say the chain is bounded by atoms with only to bonds, but there could be atoms with more than two bonds within the chain.

(I imagine this would be easier if I showed pictures of the simulations, but it's unpublished research and I'm not sure what the rules are on what I can show).
 
Smaller clusters are still reasonably easy to identify I think. Make a list of connected atoms, check all their connections recursively. You either run into a dead end before you reached N atoms (end of the chain), you reach a single open connection (cluster) or you reach N atoms (bulk). If your whole chain can look like a ladder things get more complicated.
 
  • Like
Likes   Reactions: person123
I found that it's okay to show it, so this is what one of them looks like:
chain.jpg

Is N the maximum number of atoms in the chain?
 
The N in my post would be the maximum number of atoms in small clusters as part of a larger chain. If you find more atoms that are densely connected then you are not in a chain any more.
 

Similar threads

  • · Replies 18 ·
Replies
18
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 22 ·
Replies
22
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
2
Views
3K