Main Page | Modules | Alphabetical List | Compound List | File List | Compound Members | Related Pages

testRig.cpp

00001 #include <fstream>
00002 #include <iostream>
00003 #include <iterator>
00004 #include <list>
00005 #include <vector>
00006 
00007 #include "../bb/stats.hpp"
00008 tm_stats g_counter, c_counter;
00009 
00010 #include "../bb/infinite_tape.hpp"
00011 #include "../bb/long_int.hpp"
00012 #include "../bb/state.hpp"
00013 #include "../bb/turing_machine.hpp"
00014 #include "../bb/non_halt_detection.hpp"
00015 #include "../bb/non_halt_data_structures.hpp"
00016 #include "../bb/machine_storage.hpp"
00017 #include "../bb/watch.hpp"
00018 
00019 int main()
00020 {
00021         /*turing_machine<unsigned short> machine(5,0);
00022 
00023         machine.set_halt_state(4);
00024 
00025         machine.add_write_transition(0,0,1,1);
00026         machine.add_move_transition(0,1, turing_machine<unsigned short>::left, 1);
00027         machine.add_move_transition(1,0, turing_machine<unsigned short>::left, 1);
00028         machine.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00029         machine.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00030         machine.add_write_transition(3,0,1,0);
00031         machine.add_write_transition(3,1,0,2);
00032 
00033         if(counter(machine, 5000))
00034                 std::cout << "yes" << std::endl << std::endl;
00035 
00036         turing_machine<unsigned short> machine2(6,0);
00037 
00038         machine2.set_halt_state(5);
00039 
00040         machine2.add_write_transition(0,0,1,1);
00041         machine2.add_write_transition(1,0,1,2);
00042         machine2.add_move_transition(1,1, turing_machine<unsigned short>::right, 1);
00043         machine2.add_move_transition(2,0, turing_machine<unsigned short>::left, 4);
00044         machine2.add_move_transition(2,1, turing_machine<unsigned short>::left, 3);
00045         machine2.add_write_transition(3,1,0,2);
00046         machine2.add_move_transition(4,0, turing_machine<unsigned short>::right, 0);
00047         machine2.add_write_transition(4,1,0,2);
00048 
00049         if(counter(machine2, 5000))
00050                 std::cout << "yes" << std::endl << std::endl;
00051 
00052         //machine2.printTMO(std::cout);
00053         //machine2.reverseMachine().printTMO(std::cout);
00054 
00055         turing_machine<unsigned short> machine3(6,0);
00056 
00057         machine3.set_halt_state(5);
00058 
00059         machine3.add_write_transition(0,0,1,0);
00060         machine3.add_move_transition(0,1, turing_machine<unsigned short>::right,1);
00061         machine3.add_move_transition(1,0, turing_machine<unsigned short>::right, 2);
00062         machine3.add_write_transition(2,0,1,3);
00063         machine3.add_write_transition(2,1,0,1);
00064         machine3.add_move_transition(3,0, turing_machine<unsigned short>::left, 4);
00065         machine3.add_move_transition(3,1, turing_machine<unsigned short>::left, 3);
00066         machine3.add_move_transition(4,0, turing_machine<unsigned short>::left, 4);
00067         machine3.add_move_transition(4,1, turing_machine<unsigned short>::right, 1);
00068 
00069         if(counter(machine3, 5000))
00070                 std::cout << "yes" << std::endl << std::endl;
00071 
00072         turing_machine<unsigned short> machine4(6,0);
00073 
00074         machine4.set_halt_state(5);
00075 
00076         machine4.add_write_transition(0,0,1,0);
00077         machine4.add_move_transition(0,1, turing_machine<unsigned short>::right,1);
00078         machine4.add_move_transition(1,0, turing_machine<unsigned short>::left, 2);
00079         machine4.add_write_transition(1,1,0,3);
00080         machine4.add_write_transition(2,0,1,3);
00081         machine4.add_move_transition(2,1, turing_machine<unsigned short>::left ,2);
00082         machine4.add_move_transition(3,0, turing_machine<unsigned short>::right, 0);
00083         machine4.add_move_transition(3,1, turing_machine<unsigned short>::right, 4);
00084         machine4.add_move_transition(4,1, turing_machine<unsigned short>::right, 1);
00085 
00086         if(alternateChristmasTree(machine4, 12000))
00087                 std::cout << "machine4 yes" << std::endl << std::endl;*/
00088 
00089         /*turing_machine<unsigned short> machine5(6,0);
00090 
00091         machine5.set_halt_state(5);
00092 
00093         machine5.add_write_transition(0,0,1,1);
00094         machine5.add_move_transition(0,1, turing_machine<unsigned short>::right,0);
00095         machine5.add_move_transition(1,0, turing_machine<unsigned short>::right, 4);
00096         machine5.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00097         machine5.add_write_transition(2,0,1,3);
00098         machine5.add_move_transition(3,0, turing_machine<unsigned short>::left, 1);
00099         machine5.add_move_transition(3,1, turing_machine<unsigned short>::left, 4);
00100         machine5.add_move_transition(4,0, turing_machine<unsigned short>::right, 0);
00101         machine5.add_write_transition(4,1,0,3);
00102 
00103         if(leaningChristmasTree(machine5, 5000))
00104                 std::cout << "machine5 yes" << std::endl << std::endl;*/
00105 
00106         /*turing_machine<unsigned short> machine6(6,0);
00107 
00108         machine6.set_halt_state(5);
00109 
00110         machine6.add_write_transition(0,0,1,1);
00111         machine6.add_move_transition(0,1, turing_machine<unsigned short>::left,0);
00112         machine6.add_move_transition(1,0, turing_machine<unsigned short>::right, 4);
00113         machine6.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00114         machine6.add_move_transition(2,0, turing_machine<unsigned short>::left, 2);
00115         machine6.add_move_transition(2,1, turing_machine<unsigned short>::right, 3);
00116         machine6.add_write_transition(3,0,1,0);
00117         machine6.add_move_transition(3,1, turing_machine<unsigned short>::right, 1);
00118         machine6.add_move_transition(4,0, turing_machine<unsigned short>::left, 3);
00119 
00120         if(tripleSweepChristmasTree(machine6, 20000))
00121                 std::cout << "machine6 yes" << std::endl << std::endl;*/
00122 
00123         /*turing_machine<unsigned short> machine7(6,0);
00124 
00125         machine7.set_halt_state(5);
00126 
00127         machine7.add_write_transition(0,0,1,1);
00128         machine7.add_move_transition(0,1, turing_machine<unsigned short>::left,1);
00129         machine7.add_write_transition(1,0,1,0);
00130         machine7.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00131         machine7.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00132         machine7.add_move_transition(2,1, turing_machine<unsigned short>::right, 4);
00133         machine7.add_move_transition(3,0, turing_machine<unsigned short>::right, 4);
00134         machine7.add_move_transition(4,0, turing_machine<unsigned short>::right, 1);
00135         machine7.add_write_transition(4,1,0,3);
00136 
00137         if(leaningChristmasTree(machine7, 20000))
00138                 std::cout << "machine7 yes" << std::endl << std::endl;*/
00139 
00140         /*turing_machine<unsigned short> machine8(6,0);
00141 
00142         machine8.set_halt_state(5);
00143 
00144         machine8.add_write_transition(0,0,1,0);
00145         machine8.add_move_transition(0,1, turing_machine<unsigned short>::right,1);
00146         machine8.add_write_transition(1,0,1,2);
00147         machine8.add_move_transition(1,1, turing_machine<unsigned short>::right, 4);
00148         machine8.add_move_transition(2,0, turing_machine<unsigned short>::right, 0);
00149         machine8.add_move_transition(2,1, turing_machine<unsigned short>::left, 3);
00150         machine8.add_move_transition(3,0, turing_machine<unsigned short>::left, 2);
00151         machine8.add_write_transition(3,1,0,4);
00152         machine8.add_move_transition(4,0, turing_machine<unsigned short>::right, 1);
00153 
00154         if(alternateChristmasTree(machine8, 100000))
00155                 std::cout << "machine8 yes" << std::endl << std::endl;*/
00156 
00157         /*turing_machine<unsigned short> machine8(6,0);
00158 
00159         machine8.set_halt_state(5);
00160 
00161         machine8.add_write_transition(0,0,1,1);
00162         machine8.add_move_transition(0,1, turing_machine<unsigned short>::right,1);
00163         machine8.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00164         machine8.add_write_transition(2,0,1,3);
00165         machine8.add_move_transition(2,1, turing_machine<unsigned short>::right, 0);
00166         machine8.add_move_transition(3,0, turing_machine<unsigned short>::right, 0);
00167         machine8.add_move_transition(3,1, turing_machine<unsigned short>::left, 4);
00168         machine8.add_move_transition(4,0, turing_machine<unsigned short>::right, 0);
00169         machine8.add_move_transition(4,1, turing_machine<unsigned short>::left, 3);
00170 
00171         if(alternateChristmasTree(machine8, 100000))
00172                 std::cout << "machine8 yes" << std::endl << std::endl;*/
00173 
00174         /*turing_machine<unsigned short> machine8(6,0);
00175 
00176         machine8.set_halt_state(5);
00177 
00178         machine8.add_write_transition(0,0,1,1);
00179         machine8.add_move_transition(0,1, turing_machine<unsigned short>::left,1);
00180         machine8.add_move_transition(1,0, turing_machine<unsigned short>::left,1);
00181         machine8.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00182         machine8.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00183         machine8.add_move_transition(2,1, turing_machine<unsigned short>::left, 4);
00184         machine8.add_write_transition(3,0,1,2);
00185         machine8.add_write_transition(3,1,0,2);
00186         machine8.add_move_transition(4,0, turing_machine<unsigned short>::right, 0);
00187 
00188         if(counter(machine8, 100000))
00189                 std::cout << "machine8 yes" << std::endl << std::endl;
00190 
00191         turing_machine<unsigned short> machine9(6,0);
00192 
00193         machine9.set_halt_state(5);
00194 
00195         machine9.add_write_transition(0,0,1,1);
00196         machine9.add_move_transition(0,1, turing_machine<unsigned short>::left,1);
00197         machine9.add_move_transition(1,0, turing_machine<unsigned short>::left,1);
00198         machine9.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00199         machine9.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00200         machine9.add_move_transition(2,1, turing_machine<unsigned short>::left, 0);
00201         machine9.add_move_transition(3,0, turing_machine<unsigned short>::right, 4);
00202         machine9.add_write_transition(3,1,0,2);
00203         machine9.add_write_transition(4,0,1,2);
00204 
00205         if(counter(machine9, 100000))
00206                 std::cout << "machine9 yes" << std::endl << std::endl;
00207 
00208         turing_machine<unsigned short> machine10(6,0);
00209 
00210         machine10.set_halt_state(5);
00211 
00212         machine10.add_write_transition(0,0,1,1);
00213         machine10.add_move_transition(0,1, turing_machine<unsigned short>::left,4);
00214         machine10.add_move_transition(1,0, turing_machine<unsigned short>::right,2);
00215         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00216         machine10.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00217         machine10.add_move_transition(3,0, turing_machine<unsigned short>::left, 4);
00218         machine10.add_write_transition(3,1,0,1);
00219         machine10.add_move_transition(4,0, turing_machine<unsigned short>::left, 0);
00220 
00221         if(counter(machine10, 100000))
00222                 std::cout << "machine10 yes" << std::endl << std::endl;
00223 
00224         turing_machine<unsigned short> machine10(6,0);
00225 
00226         machine10.set_halt_state(5);
00227 
00228         machine10.add_write_transition(0,0,1,1);
00229         machine10.add_move_transition(0,1, turing_machine<unsigned short>::right,3);
00230         machine10.add_move_transition(1,0, turing_machine<unsigned short>::right,2);
00231         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00232         machine10.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00233         machine10.add_move_transition(3,0, turing_machine<unsigned short>::left, 4);
00234         machine10.add_write_transition(3,1,0,1);
00235         machine10.add_move_transition(4,0, turing_machine<unsigned short>::left, 0);
00236         machine10.add_move_transition(4,1, turing_machine<unsigned short>::left, 4);
00237 
00238         if(counter(machine10, 100000))
00239                 std::cout << "machine10 yes" << std::endl << std::endl;
00240 
00241         turing_machine<unsigned short> machine10(6,0);
00242 
00243         machine10.set_halt_state(5);
00244 
00245         machine10.add_write_transition(0,0,1,1);
00246         machine10.add_move_transition(0,1, turing_machine<unsigned short>::left,2);
00247         machine10.add_move_transition(1,0, turing_machine<unsigned short>::right,3);
00248         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00249         machine10.add_move_transition(2,0, turing_machine<unsigned short>::left, 2);
00250         machine10.add_move_transition(2,1, turing_machine<unsigned short>::right, 1);
00251         machine10.add_move_transition(3,0, turing_machine<unsigned short>::right, 4);
00252         machine10.add_write_transition(4,0,1,0);
00253         machine10.add_write_transition(4,1,0,1);
00254 
00255         if(counter(machine10, 50000))
00256                 std::cout << "machine10 yes" << std::endl << std::endl;
00257 
00258         /*turing_machine<unsigned short> machine10(6,0);
00259 
00260         machine10.set_halt_state(5);
00261 
00262         machine10.add_write_transition(0,0,1,1);
00263         machine10.add_move_transition(0,1, turing_machine<unsigned short>::left,4);
00264         machine10.add_move_transition(1,0, turing_machine<unsigned short>::left,4);
00265         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00266         machine10.add_move_transition(2,0, turing_machine<unsigned short>::left, 3);
00267         machine10.add_write_transition(3,0,1,0);
00268         machine10.add_move_transition(3,1, turing_machine<unsigned short>::right, 3);
00269         machine10.add_move_transition(4,0, turing_machine<unsigned short>::right, 3);
00270         machine10.add_write_transition(4,1,0,1);
00271 
00272         if(counter(machine10, 50000))
00273                 std::cout << "machine10 yes" << std::endl << std::endl;
00274 
00275         turing_machine<unsigned short> machine10(6,0);
00276 
00277         machine10.set_halt_state(5);
00278 
00279         machine10.add_write_transition(0,0,1,1);
00280         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right,2);
00281         machine10.add_move_transition(2,0, turing_machine<unsigned short>::right,3);
00282         machine10.add_write_transition(2,1,0,4);
00283         machine10.add_write_transition(3,0,1,4);
00284         machine10.add_move_transition(3,1, turing_machine<unsigned short>::right, 1);
00285         machine10.add_move_transition(4,0, turing_machine<unsigned short>::right, 2);
00286         machine10.add_move_transition(4,1, turing_machine<unsigned short>::left, 3);
00287 
00288         if(leaningChristmasTree(machine10, 50000))
00289                 std::cout << "machine10 yes" << std::endl << std::endl;
00290 
00291         turing_machine<unsigned short> machine10(6,0);
00292 
00293         machine10.set_halt_state(5);
00294 
00295         machine10.add_write_transition(0,0,1,1);
00296         machine10.add_write_transition(0,1,0,2);
00297         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right,2);
00298         machine10.add_move_transition(2,0, turing_machine<unsigned short>::right,3);
00299         machine10.add_move_transition(2,1, turing_machine<unsigned short>::left,3);
00300         machine10.add_write_transition(3,0,1,4);
00301         machine10.add_move_transition(3,1, turing_machine<unsigned short>::right, 1);
00302         machine10.add_move_transition(4,0, turing_machine<unsigned short>::left, 0);
00303         machine10.add_move_transition(4,1, turing_machine<unsigned short>::left, 4);
00304 
00305         if(leaningChristmasTree(machine10, 50000))
00306                 std::cout << "machine10 yes" << std::endl << std::endl;
00307 
00308         turing_machine<unsigned short> machine8(6,0);
00309 
00310         machine8.set_halt_state(5);
00311 
00312         machine8.add_write_transition(0,0,1,0);
00313         machine8.add_move_transition(0,1, turing_machine<unsigned short>::right,1);
00314         machine8.add_write_transition(1,0,1,2);
00315         machine8.add_move_transition(1,1, turing_machine<unsigned short>::right, 4);
00316         machine8.add_move_transition(2,0, turing_machine<unsigned short>::right, 0);
00317         machine8.add_move_transition(2,1, turing_machine<unsigned short>::left, 3);
00318         machine8.add_move_transition(3,0, turing_machine<unsigned short>::left, 2);
00319         machine8.add_write_transition(3,1,0,4);
00320         machine8.add_move_transition(4,0, turing_machine<unsigned short>::right, 1);
00321 
00322         if(multiSweepChristmasTree(machine8, 2, 100000))
00323         //if(alternateChristmasTree(machine8, 100000))
00324                 std::cout << "machine8 yes" << std::endl << std::endl;
00325 
00326         turing_machine<unsigned short> machine10(6,0);
00327 
00328         machine10.set_halt_state(5);
00329 
00330         machine10.add_write_transition(0,0,1,1);
00331         machine10.add_move_transition(0,1, turing_machine<unsigned short>::left,1);
00332         machine10.add_move_transition(1,0, turing_machine<unsigned short>::left,1);
00333         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00334         machine10.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00335         machine10.add_write_transition(3,0,1,0);
00336         machine10.add_move_transition(3,1, turing_machine<unsigned short>::left, 4);
00337         machine10.add_move_transition(4,0, turing_machine<unsigned short>::right, 4);
00338         machine10.add_write_transition(4,1,0,2);
00339 
00340         if(counter(machine10, 50000))
00341                 std::cout << "machine10 yes" << std::endl << std::endl;*/
00342 
00343         turing_machine<unsigned short> machine10(6,0);
00344 
00345         machine10.set_halt_state(5);
00346 
00347         machine10.add_write_transition(0,0,1,1);
00348         machine10.add_move_transition(0,1, turing_machine<unsigned short>::left,3);
00349         machine10.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00350         machine10.add_move_transition(2,0, turing_machine<unsigned short>::left, 0);
00351         machine10.add_write_transition(2,1,0,4);
00352         machine10.add_write_transition(3,0,1,4);
00353         machine10.add_move_transition(3,1, turing_machine<unsigned short>::left, 0);
00354         machine10.add_move_transition(4,0, turing_machine<unsigned short>::right, 2);
00355         machine10.add_move_transition(4,1, turing_machine<unsigned short>::right, 1);
00356 
00357         if(counter(machine10, 50000))
00358                 std::cout << "machine10 yes" << std::endl << std::endl;
00359 
00360         return 0;
00361 }

Generated on Thu Nov 20 00:17:32 2003 for BusyBeaver by doxygen 1.3.3