1
Fork 0
mirror of https://github.com/Jaxan/hybrid-ads.git synced 2025-04-27 23:17:44 +02:00
hybrid-ads/src/metrics.cpp
Joshua Moerman 598e72b880 Simplifies code by removing phantom typing.
Also removes other unused tools.
2015-04-07 08:50:18 +02:00

58 lines
1.4 KiB
C++

#include <mealy.hpp>
#include <read_mealy_from_dot.hpp>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
auto create_transfer_sequences(const mealy& machine, const state s, const input ignore){
vector<bool> visited(machine.graph_size, false);
queue<state> work;
work.push(s);
while(!work.empty()){
const auto u = work.front();
work.pop();
if(visited[u]) continue;
visited[u] = true;
for(input i = 0; i < machine.input_size; ++i){
if(i == ignore) continue;
const auto v = apply(machine, u, i).to;
if(visited[v]) continue;
work.push(v);
}
}
return visited;
}
int main(int argc, char *argv[]){
if(argc != 2) return 1;
const string filename = argv[1];
const auto result = read_mealy_from_dot(filename);
const auto & machine = result.first;
const auto & translation = result.second;
// vector<vector<bool>> table(machine.input_size);
// for(input i = 0; i < machine.input_size; ++i){
// table[i] = create_transfer_sequences(machine, 0, i);
// }
// note the wrong iteration ;D
for(state s = 0; s < machine.graph_size; ++s){
size_t scores[3] = {0, 0, 0};
for(input i = 0; i < machine.input_size; ++i){
const auto test1 = apply(machine, s, i).output != translation.output_indices.at("quiescence");
const auto test2 = apply(machine, s, i).to != s;
scores[test1 + test2]++;
}
cout << scores[2] << " " << scores[1] << " " << scores[0] << endl;
}
}