Skip to content

Instantly share code, notes, and snippets.

@anilpai
Last active June 12, 2024 12:57
Show Gist options
  • Select an option

  • Save anilpai/940f911d8cf838ffeb98ddf23fee0ce3 to your computer and use it in GitHub Desktop.

Select an option

Save anilpai/940f911d8cf838ffeb98ddf23fee0ce3 to your computer and use it in GitHub Desktop.

Revisions

  1. anilpai revised this gist Jun 12, 2024. 1 changed file with 13 additions and 12 deletions.
    25 changes: 13 additions & 12 deletions DoS1.py
    Original file line number Diff line number Diff line change
    @@ -8,19 +8,19 @@ def add_edge(self, node, neighbour):
    self.graph[node].append(neighbour)
    self.graph[neighbour].append(node)

    def first_degree_nodes(self, node):
    def zero_degree_nodes(self, node):
    return self.graph[node]

    def second_degree_nodes(self, node):
    second_degree_nodes = set()
    first_degree_nodes = self.first_degree_nodes(node)
    for first_degree_node in first_degree_nodes:
    second_degree_nodes.update(self.first_degree_nodes(first_degree_node))
    second_degree_nodes.difference_update(first_degree_nodes) # remove first-degree nodes
    second_degree_nodes.discard(node) # remove the node itself if present
    return list(second_degree_nodes)
    def first_degree_nodes(self, node):
    first_degree_nodes = set()
    zero_degree_nodes = self.zero_degree_nodes(node)
    for zero_degree_node in zero_degree_nodes:
    first_degree_nodes.update(self.zero_degree_nodes(zero_degree_node))
    first_degree_nodes.difference_update(zero_degree_nodes) # remove first-degree nodes
    first_degree_nodes.discard(node) # remove the node itself if present
    return list(first_degree_nodes)


    # Usage
    g = Graph()
    g.add_edge('A', 'B')
    g.add_edge('A', 'C')
    @@ -29,5 +29,6 @@ def second_degree_nodes(self, node):
    g.add_edge('C', 'F')
    g.add_edge('F', 'G')

    print("First degree nodes of A:", g.first_degree_nodes('A')) # ['B', 'C']
    print("Second degree nodes of A:", g.second_degree_nodes('A')) # ['D', 'E', 'F']
    print("Zero degree nodes of A:", g.zero_degree_nodes('A')) # ['B', 'C']
    print("First degree nodes of A:", g.first_degree_nodes('A')) # ['D', 'E', 'F']

  2. anilpai created this gist Jun 12, 2024.
    33 changes: 33 additions & 0 deletions DoS1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    from collections import defaultdict

    class Graph:
    def __init__(self):
    self.graph = defaultdict(list)

    def add_edge(self, node, neighbour):
    self.graph[node].append(neighbour)
    self.graph[neighbour].append(node)

    def first_degree_nodes(self, node):
    return self.graph[node]

    def second_degree_nodes(self, node):
    second_degree_nodes = set()
    first_degree_nodes = self.first_degree_nodes(node)
    for first_degree_node in first_degree_nodes:
    second_degree_nodes.update(self.first_degree_nodes(first_degree_node))
    second_degree_nodes.difference_update(first_degree_nodes) # remove first-degree nodes
    second_degree_nodes.discard(node) # remove the node itself if present
    return list(second_degree_nodes)

    # Usage
    g = Graph()
    g.add_edge('A', 'B')
    g.add_edge('A', 'C')
    g.add_edge('B', 'D')
    g.add_edge('B', 'E')
    g.add_edge('C', 'F')
    g.add_edge('F', 'G')

    print("First degree nodes of A:", g.first_degree_nodes('A')) # ['B', 'C']
    print("Second degree nodes of A:", g.second_degree_nodes('A')) # ['D', 'E', 'F']