mirror of
https://github.com/Jaxan/hybrid-ads.git
synced 2025-04-27 23:17:44 +02:00
Removes concurrency as std::future seems to be broken in VS 2013
This commit is contained in:
parent
037646a16a
commit
7817edbb90
1 changed files with 15 additions and 15 deletions
30
src/main.cpp
30
src/main.cpp
|
@ -48,7 +48,7 @@ int main(int argc, char *argv[]) try {
|
||||||
const auto & machine = reachable_submachine(move(machine_and_translation.first), 0);
|
const auto & machine = reachable_submachine(move(machine_and_translation.first), 0);
|
||||||
const auto & translation = machine_and_translation.second;
|
const auto & translation = machine_and_translation.second;
|
||||||
|
|
||||||
auto all_pair_seperating_sequences_fut = async([&]{
|
auto all_pair_seperating_sequences = [&]{
|
||||||
const auto splitting_tree_hopcroft = [&]{
|
const auto splitting_tree_hopcroft = [&]{
|
||||||
time_logger t("creating hopcroft splitting tree");
|
time_logger t("creating hopcroft splitting tree");
|
||||||
return create_splitting_tree(machine, randomize_hopcroft ? randomized_hopcroft_style : hopcroft_style);
|
return create_splitting_tree(machine, randomize_hopcroft ? randomized_hopcroft_style : hopcroft_style);
|
||||||
|
@ -60,9 +60,9 @@ int main(int argc, char *argv[]) try {
|
||||||
}();
|
}();
|
||||||
|
|
||||||
return all_pair_seperating_sequences;
|
return all_pair_seperating_sequences;
|
||||||
});
|
}();
|
||||||
|
|
||||||
auto sequence_fut = async([&]{
|
auto sequence = [&]{
|
||||||
const auto tree = [&]{
|
const auto tree = [&]{
|
||||||
time_logger t("Lee & Yannakakis I");
|
time_logger t("Lee & Yannakakis I");
|
||||||
if(use_distinguishing_sequence)
|
if(use_distinguishing_sequence)
|
||||||
|
@ -77,22 +77,22 @@ int main(int argc, char *argv[]) try {
|
||||||
}();
|
}();
|
||||||
|
|
||||||
return sequence;
|
return sequence;
|
||||||
});
|
}();
|
||||||
|
|
||||||
auto transfer_sequences_fut = std::async([&]{
|
auto transfer_sequences = [&]{
|
||||||
time_logger t("determining transfer sequences");
|
time_logger t("determining transfer sequences");
|
||||||
if(randomize_prefixes){
|
if(randomize_prefixes){
|
||||||
return create_randomized_transfer_sequences(machine, 0);
|
return create_randomized_transfer_sequences(machine, 0);
|
||||||
} else {
|
} else {
|
||||||
return create_transfer_sequences(machine, 0);
|
return create_transfer_sequences(machine, 0);
|
||||||
}
|
}
|
||||||
});
|
}();
|
||||||
|
|
||||||
auto inputs_fut = std::async([&]{
|
auto inputs = [&]{
|
||||||
return create_reverse_map(translation.input_indices);
|
return create_reverse_map(translation.input_indices);
|
||||||
});
|
}();
|
||||||
|
|
||||||
auto relevant_inputs_fut = std::async([&]{
|
auto relevant_inputs = [&]{
|
||||||
time_logger t("determining relevance of inputs");
|
time_logger t("determining relevance of inputs");
|
||||||
vector<discrete_distribution<input>> distributions(machine.graph_size);
|
vector<discrete_distribution<input>> distributions(machine.graph_size);
|
||||||
|
|
||||||
|
@ -111,18 +111,18 @@ int main(int argc, char *argv[]) try {
|
||||||
distributions[s] = discrete_distribution<input>(r_cache.size(), r_cache.front(), r_cache.back(), [&r_cache, &i](double) { return r_cache[i++]; });
|
distributions[s] = discrete_distribution<input>(r_cache.size(), r_cache.front(), r_cache.back(), [&r_cache, &i](double) { return r_cache[i++]; });
|
||||||
}
|
}
|
||||||
return distributions;
|
return distributions;
|
||||||
});
|
}();
|
||||||
|
|
||||||
const auto all_pair_seperating_sequences = all_pair_seperating_sequences_fut.get();
|
// const auto all_pair_seperating_sequences = all_pair_seperating_sequences_fut.get();
|
||||||
const auto sequence = sequence_fut.get();
|
// const auto sequence = sequence_fut.get();
|
||||||
|
|
||||||
const auto seperating_family = [&]{
|
const auto seperating_family = [&]{
|
||||||
time_logger t("making seperating family");
|
time_logger t("making seperating family");
|
||||||
return create_seperating_family(sequence, all_pair_seperating_sequences);
|
return create_seperating_family(sequence, all_pair_seperating_sequences);
|
||||||
}();
|
}();
|
||||||
|
|
||||||
const auto transfer_sequences = transfer_sequences_fut.get();
|
// const auto transfer_sequences = transfer_sequences_fut.get();
|
||||||
const auto inputs = inputs_fut.get();
|
// const auto inputs = inputs_fut.get();
|
||||||
|
|
||||||
const auto print_word = [&](vector<input> w){
|
const auto print_word = [&](vector<input> w){
|
||||||
for(auto && x : w) cout << inputs[x] << ' ';
|
for(auto && x : w) cout << inputs[x] << ' ';
|
||||||
|
@ -208,7 +208,7 @@ int main(int argc, char *argv[]) try {
|
||||||
uniform_int_distribution<size_t> prefix_selection(0, transfer_sequences.size()-1);
|
uniform_int_distribution<size_t> prefix_selection(0, transfer_sequences.size()-1);
|
||||||
uniform_int_distribution<> unfair_coin(0, 2); // expected flips is p / (p-1)^2, where p is succes probability
|
uniform_int_distribution<> unfair_coin(0, 2); // expected flips is p / (p-1)^2, where p is succes probability
|
||||||
uniform_int_distribution<size_t> suffix_selection;
|
uniform_int_distribution<size_t> suffix_selection;
|
||||||
auto relevant_inputs = relevant_inputs_fut.get();
|
// auto relevant_inputs = relevant_inputs_fut.get();
|
||||||
|
|
||||||
while(true){
|
while(true){
|
||||||
state current_state = 0;
|
state current_state = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue