{"id":13548470,"url":"https://github.com/named-data/Hyperbolic-Graph-Generator","last_synced_at":"2025-04-02T21:31:34.928Z","repository":{"id":19750295,"uuid":"23007268","full_name":"named-data/Hyperbolic-Graph-Generator","owner":"named-data","description":"A set of tools to generate synthetic graphs embedded into a hyperbolic space and to test the greedy routing.","archived":false,"fork":false,"pushed_at":"2016-01-21T19:32:38.000Z","size":619,"stargazers_count":27,"open_issues_count":0,"forks_count":7,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-03T17:39:38.773Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/named-data.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-16T00:46:54.000Z","updated_at":"2024-10-25T07:03:16.000Z","dependencies_parsed_at":"2022-07-22T13:02:06.769Z","dependency_job_id":null,"html_url":"https://github.com/named-data/Hyperbolic-Graph-Generator","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/named-data%2FHyperbolic-Graph-Generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/named-data%2FHyperbolic-Graph-Generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/named-data%2FHyperbolic-Graph-Generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/named-data%2FHyperbolic-Graph-Generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/named-data","download_url":"https://codeload.github.com/named-data/Hyperbolic-Graph-Generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246895779,"owners_count":20851325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T12:01:10.797Z","updated_at":"2025-04-02T21:31:34.630Z","avatar_url":"https://github.com/named-data.png","language":"C++","funding_links":[],"categories":["C++","others"],"sub_categories":[],"readme":"### Hyperbolic-Graph-Generator\n\n\nThe Hyperbolic-Graph-Generator is a package of tools to generate\ngraphs embedded in the hyperbolic plane, and to compute the efficiency\nof greedy forwarding in these graphs.\n\nMore details on the graph models implemented in the package are available\nat http://arxiv.org/abs/1503.05180/.\n\nThis standalone package is also a core component of the hyperbolic\nrouting package that is going to be integrated into the NDNSim (http://ndnsim.net).\nHyperbolic routing is greedy geometric routing in a\nhyperbolically embedded network. Hyperbolic routing has attractive\nscalability and efficiency characteristics. In particular, applied to\nthe AS Internet, hyperbolic routing is nearly optimal, i.e., maximally\nscalable (http://dx.doi.org/10.1038/ncomms1063/). The NDN testbed has\nbeen recently mapped to the hyperbolic plane yielding similar routing\nefficiency (http://www.caida.org/research/routing/greedy_forwarding_ndn/).\nBecause of its exceptional scalability and efficiency characteristics,\nhyperbolic routing is one of the routing strategies in the NDN\narchitecture.\n\nThe software package includes three tools (see README_INSTALL for\ninformation on installation details):\n- hyperbolic_graph_generator\n- graph_properties\n- greedy_routing\n\n\n\n\n### Description:\n\n1) hyperbolic_graph_generator: a tool to generate synthetic graphs embedded\n   into a hyperbolic space.\n\nNAME: \n\thyperbolic_graph_generator -- generate an hyperbolic graph compatible with user parameters \n\nSYNOPSIS: \n\thyperbolic_graph_generator [parameters]  \n\nDESCRIPTION:\n\tThe program generates a file (graph.hg is the default file name) that\n\tdescribes the geometric coordinates and the links of a hyperbolic graph\n\tcompatible with the parameters provided by the user. The program generates\n\trandom hyperbolic graphs according to the models in:\n\t            http://dx.doi.org/10.1103/PhysRevE.82.036106\n\tA description of how the hyperbolic graph generator works can be found at:\n\t            http://arxiv.org/abs/1503.05180\n\nPARAMETERS:\n\t-n\tgraph size (number of nodes)\n\t\tdefault value is 1000\n\t-k\texpected average degree\n\t\tdefault value is 10\n\t-g\texpected power-law exponent gamma\n\t\tdefault value is 2 (infinite gamma = 10)\n\t-t\ttemperature\n\t\tdefault value is 0 (infinite temperature = 10)\n\t-z\tsquare root of curvature zeta=sqrt(-K)\n\t\tor ratio eta=zeta/T in Soft Configuration Model\n\t\tdefault value is 1\n\t-s\trandom seed\n\t\tdefault value is 1\n\t-o\toutput folder\n\t\tdefault value is current folder\n\t-f\tgraph file name\n\t\tdefault value is graph (.hg extension is always added)\n\t-h\tprint help menu\n\t-q\tquiet (no information print on standard output)\n\nOUTPUT:\n\tThe program generates a file (./graph.hg unless the -o or -f options are turned on)\n\tthat lists the coordinates of each node in the hyperbolic space as well as the \n\tadjacency list. The file format is the following:\n\n\t# The first line describes the main graph parameters:\n\tN \u003cnum nodes\u003e T \u003ctemperature\u003e G \u003cgamma\u003e K \u003cavg.degree\u003e Z \u003czeta\u003e S \u003cseed\u003e I \u003cinitial_node_id\u003e\n\n\t# A line for each node and its polar coordinates:\n\t\u003cnode_id\u003e\t\u003cradial coordinate\u003e\t\u003cangular coordinate\u003e\n\n\t# A line for each link:\n\t\u003cnode_id\u003e\t\u003cnode id\u003e \n\n\tExample:\n\tN\t100\tT\t0\tG\t2\tK\t10\tZ\t2\tS\t1    I  1\n\t1\t0.000301382\t0.826476\n\t2\t0.093611\t2.88178\n\t3\t0.0786131\t1.37576\n\t... \n\t99\t0.10503\t3.97561\n\t100\t0.0713906\t5.18173\n\t1\t2\n\t1\t3\n\t1\t4\n\t...\n\t97\t98\n\t98\t99\n\nEXAMPLE:\n\n\t# Generate a graph of 10,000 nodes with average degree 10,\n \t# whose degrees follow a power-law distribution P(k) ~ k^{-2.5}\n\t# The graph is written in graph_example.hg\n \t# All other parameters take default values\n \n\thyperbolic_graph_generator -n 10000 -k 10 -g 2.5 -f graph_example\n\n\n\n\n2) graph_properties: a tool to compute some basic graph properties of the generated\n   hyperbolic graphs.\n\nNAME: \n\tgraph_properties -- compute properties of hyperbolic graphs\n\nSYNOPSIS: \n\tgraph_properties [parameters] \n\nDESCRIPTION:\n\tThe program computes some graph  properties associated with nodes of the\n\thyperbolic graph provided as input (./graph.hg is default), in detail: \n\tthe polar coordinates of each node, its degree, its average neighbor\n\tdegree, and its clustering coefficient.\n\nPARAMETERS:\n\t-i\tgraph file (in hg format)\n\t\tdefault value is ./graph.hg\n\t-o\toutput folder\n\t\tdefault value is current folder\n\t-h\tprint help menu\n\nOUTPUT:\n\tThe program generates five text files having the following format:\n\n\tradial.txt\n\t\t\t\u003cnode id\u003e \u003cradial coordinate\u003e\n\tangular.txt\n\t\t\t\u003cnode id\u003e \u003cangular coordinate\u003e\n\tdegree.txt\n\t\t\t\u003cnode id\u003e \u003cnode degree\u003e\n\tknn.txt\n\t\t\t\u003cnode id\u003e \u003cnode avg. neigh. degree\u003e\n\tcc.txt\n\t\t\t\u003cnode id\u003e \u003cnode clustering coefficient\u003e\n\n\nEXAMPLE:\n\t\n\tgraph_properties -i graph_example.hg\n\n\n\n\n\n3) greedy_routing: a tool to test the greedy routing on hyperbolic graphs.\n\nNAME: \n\tgreedy_routing -- compute the greedy routing success ratio \n\nSYNOPSIS: \n\tgreedy_routing [parameters] \n\nDESCRIPTION:\n\tThe program loads in memory a hyperbolic graph (./graph.hg by default),\n\tit simulates the greedy routing on a set of random source-destination node\n\tpairs belonging to the same connected component (default is 10,000  random\n\tpairs), and finally outputs the success ratio (i.e. the percentage of times\n\tthe information sent by the source node would have reached the destination\n\tif each node would adopt the greedy routing rules.\n\nPARAMETERS:\n\t-i\tinput graph file (in hg format)\n\t\tdefault value is ./graph.hg\n\t-a\tnumber of attempts\n\t\tdefault value is 10000\n\t-s\trandom seed\n\t\tdefault value is 1\n\t-h\tprint help menu\n\nOUTPUT:\n\tThe program print the success ratio to standard output.\n\nEXAMPLE:\n\n\t# Test geometric greedy routing in the graph located in graph_example.hg\n\t# using 20,000 random pairs of nodes.\n\t# The seed for the random generator is 12345\n\t\n\tgreedy_routing -i graph_example.hg -a 20000 -s 12345\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamed-data%2FHyperbolic-Graph-Generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamed-data%2FHyperbolic-Graph-Generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamed-data%2FHyperbolic-Graph-Generator/lists"}