Skip to content

Commit

Permalink
directed flag added to ERG graph generation engine (#167)
Browse files Browse the repository at this point in the history
* add : `direct` option added to menu.

* update : `edge_gen` updated for accepting `direct` flag.

* update : `direct` added to `erg_profile`.

* update : `logger` updated.

* test : `edge_gen` function tests updated.

* test : `dimacs_maker` tests for erg engine updated.

* tests : other tests updated accordingly.
  • Loading branch information
sadrasabouri authored Jun 4, 2024
1 parent fd402c7 commit e23b40f
Show file tree
Hide file tree
Showing 4 changed files with 264 additions and 27 deletions.
1 change: 1 addition & 0 deletions otherfile/profiles/erg_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
{
'vertices':10000,
'probability':0.5,
'direct':1,
}
)
20 changes: 14 additions & 6 deletions pyrgg/engines/erdos_reyni_gilbert.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,23 @@
Probability : {2}
Vertices : {3}
Total Edges : {4}
Engine : {5} ({6})
Elapsed Time : {7}
Directed : {5}
Engine : {6} ({7})
Elapsed Time : {8}
-------------------------------
"""


def edge_gen(n, p):
def edge_gen(n, p, direct):
"""
Generate each vertex connection number.
:param n: number of vertices
:type n: int
:param p: probability
:type p: float
:param direct: directed graph flag
:type direct: bool
:return: list of dicts
"""
edge_dic = {}
Expand All @@ -31,7 +34,10 @@ def edge_gen(n, p):
for i in range(1, n + 1):
edge_dic[i] = []
temp_list = []
for j in range(i + 1, n + 1):
dest_list = range(i + 1, n + 1)
if direct:
dest_list = [*range(1, i), *dest_list]
for j in dest_list:
temp_list.append(1)
if random() < p:
edge_dic[i].append(j)
Expand Down Expand Up @@ -59,7 +65,8 @@ def gen_using(
"""
edge_dic, weight_dic, edge_number = edge_gen(
input_dict['vertices'],
input_dict['probability'])
input_dict['probability'],
input_dict['direct'])
gen_function(
edge_dic,
weight_dic,
Expand All @@ -71,7 +78,7 @@ def gen_using(
"min_edge": edge_number,
"max_edge": edge_number,
"sign": False,
"direct": False,
"direct": input_dict['direct'],
"self_loop": False,
"multigraph": False,
"edge_number": edge_number,
Expand Down Expand Up @@ -99,6 +106,7 @@ def logger(file, file_name, elapsed_time, input_dict):
str(input_dict["probability"]),
str(input_dict["vertices"]),
str(input_dict["edge_number"]),
str(bool(input_dict["direct"])),
input_dict["engine"],
ENGINE_MENU[input_dict["engine"]],
elapsed_time))
Expand Down
1 change: 1 addition & 0 deletions pyrgg/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
ERG_ENGINE_PARAMS = {
1: ["vertices", "- Vertices Number (>=0) : "],
2: ["probability", "- Probability (0 <= p <= 1) : "],
3: ["direct", "- Undirected[0] or Directed[1]"],
}

PYRGG_ENGINE_PARAMS = {
Expand Down
Loading

0 comments on commit e23b40f

Please sign in to comment.