1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
// TODO: implement struct node
struct node {
const char* label;
vector<float> prob;
vector<node*> succ;
};
// TODO: implement function traversal
void node_init(node* a, const char label[] /*TODO: arguments*/) {
a->label = label;
}
void edge_init(node* a, node* b, float probability/*TODO: arguments*/) {
a->succ.push_back(b);
a->prob.push_back(probability);
}
void init_graph(node* nodes /*TODO: arguments*/) {
node_init(nodes, "a");
node_init(nodes+1, "b ");
node_init(nodes+2, "c ");
node_init(nodes+3, "d ");
node_init(nodes+4, "e ");
node_init(nodes+5, "f ");
node_init(nodes+6, "g ");
node_init(nodes+7, "h ");
node_init(nodes+8, "i ");
node_init(nodes+9, "j ");
// TODO: add missing nodes
edge_init(nodes, nodes+1, 0.5);
edge_init(nodes, nodes+2, 0.5);
edge_init(nodes+1, nodes+3, 0.3);
edge_init(nodes+1, nodes+4, 0.3);
edge_init(nodes+1, nodes+5, 0.4);
edge_init(nodes+2, nodes+4, 0.5);
edge_init(nodes+2, nodes+5, 0.5);
edge_init(nodes+3, nodes, 1.0);
edge_init(nodes+4, nodes+6, 0.5);
edge_init(nodes+4, nodes+7, 0.5);
edge_init(nodes+5, nodes+6, 0.25);
edge_init(nodes+5, nodes+7, 0.25);
edge_init(nodes+5, nodes+8, 0.25);
edge_init(nodes+5, nodes+9, 0.25);
edge_init(nodes+6, nodes, 1.0);
edge_init(nodes+7, nodes, 1.0);
edge_init(nodes+8, nodes, 1.0);
edge_init(nodes+9, nodes, 1.0);
// TODO: add missing edges
}
int main(int argc, char *argv[]) {
if (argc > 1) {
srand(time(0));
node *nodes= new node[12];
init_graph(nodes);
int fische = traversal(nodes,atoi(argv[1]));
cout << endl << "Number of e-access: " << e << endl;
delete [] nodes;
} else {
cout << "Call with number of steps for traversal.\n";
}
return 0;
}
|