First, you need to
make Then run
./main run_settings where run_settings has the following structure {flag} {arg}
| Flag | Argument range | Default | Description |
|---|---|---|---|
| -alg | {bfs, dfs, bibfs, sv_k} | sv_1 | Choose your favorite algorithm. |
| -qp | [0, 100] | 100 | Query Percentage |
| -qt | Any Int | 0 | Query Timestamp |
| -trc | Any Int | 10 | Test Run Count (#times to run the experiment) |
| -ts | Any Int | 1800 | Set time out in seconds |
| -os | Any Int | 1223 | Set Operation Seed |
| -qs | Any Int | 2334 | Set Query Seed |
| -inp | Any string | sample.txt | Input file name |
| -meta | Any string | meta-sample.txt | Meta file name |
| -out | Any string | output.txt | Output file name |
| -log | Any string | log.txt | Log file name |
./main -alg sv_2 -qp 40 -log log.txt
Note You may need to set stack size to unlimited for dfs; use
ulimit -s unlimitedbefore running the executable.
For now, all samples are available here. You can download and extract them and give the path as an input (with flag -inp) to the executable.
Note Since the operations for our project are insertions-only (in contrast to the fully dynamic case), we have to generate our own input. This new input is stored in a build folder in the same directory as the original input.
Our inputs consist of the following line(s) u v t where u and v are
vertices for our edge insertions (sequentially), and t is the timestamp.
The timestamps are non-decreasing and by setting -qt, you can specify the timestamp
for our initial graph (i.e. edge insertions before qt make up the initial graph).
After we have generated our initial graph, by -qp chance, there will be a
query operation after each operation (i.e. query or insertion).
The query operations are generated randomly over all the vertices.
The generated log file has the following format:
| Field | Value |
|---|---|
| test id | number of the test |
| input file name | name of the input file |
| input file lines | number of the input lines (initial graph + edge insertions) |
| seed | seeds used to generate operation queries |
| #run | number of test runs |
| algorithm | algorithm used to answer queries |
| #query opertions | number of query operations |
| #insertion operations | number of insertion operations |
| start time | start time of the test execution |
| end time | end time of the test execution |
| duration | total duration of tests running time (nanoseconds) |
| queries | total duration of tests query time (shown also individually) |
| insertions | total duration of tests insertion time (shown also individually) |
| hashed output | test hashed output |
| #reachable queries | number of queries which were true |
Note If the algorithm is sv_k, the sv nodes (for each run) are also shown in the log.