Zobacz satfactor
:
Przekształć faktoryzację całkowitą w boolowski problem ZADOWOLENIA
Shane Neph
Przegląd
Czynniki determinujące dużą liczbę całkowitą były przedmiotem zainteresowania Człowieka przynajmniej od czasów Euclida. Nie ma znanego ogólnego algorytmu dla tego problemu, który skaluje się w czasie krótszym niż wykładniczy w odniesieniu do liczby bitów potrzebnych do przedstawienia liczby całkowitej.
Co robi ten kod
Przekształca problem faktoryzacji liczb całkowitych w boolowski problem ZADOWOLENIA. Jeśli problem rozwiązuje solver SAT, wówczas wyodrębnia czynniki całkowite.
Boolen solvery satysfakcji poprawiają się z każdym rokiem. Co 2 lata odbywa się międzynarodowy konkurs między solverami (patrz
http://www.satcompetition.org/ i http://www.satlive.org/ ). Jak dobrze te najnowocześniejsze solwery radzą sobie z jednym z najstarszych istniejących problemów otwartej matematyki?
Ten projekt ma 2 główne cele:
1) Przekształć problem i uwzględnij liczbę całkowitą będącą przedmiotem zainteresowania!
2) Szybko stwórz rozwiązywalny lub nierozwiązywalny problem ZADOWOLENIA, którego trudnością łatwo steruje twórca.
- Aby stworzyć nierozwiązywalny problem SATYSFIABILNOŚCI, po prostu zakoduj liczbę pierwszą.
- Aby stworzyć trudniejsze, ale możliwe do rozwiązania problemy, wybierz większe liczby zespolone z mniejszą liczbą czynników.
Liczba odsetek może być dowolnej wielkości!
Istnieje kilka rozwiązań SATYSFIABILITY typu open source. Niektóre z nich można znaleźć na stronie http://www.satlive.org/ .
Budować
make -C src /
Jak
Wprowadź liczbę zainteresowań w formie binarnej:
bin / iencode 10101> composite.21
// rozwiązuj za pomocą swojego ulubionego solvera i umieść wyniki w solution.txt
bin / extract-sat composite.21 solution.txt
Wynik wyniósłby:
00011
00111
które są reprezentacjami binarnymi dla liczb całkowitych dziesiętnych 3 i 7, współczynniki 21.
Jeśli wejściowa liczba całkowita ma więcej niż 2 czynniki, a problem SAT został rozwiązany, wyjście będzie tylko dwoma z czynników. Mogą to nie być liczby pierwsze (możesz to łatwo sprawdzić w Maxima, Maple lub Mathematica).
Nie wszystkie dane wyjściowe solverów SAT mają ten sam format. Konieczne może być lekceważenie tych wyników. extract-sat wymaga pliku rozwiązania zawierającego listę liczb całkowitych (w dowolnej liczbie wierszy). Na przykład,
1 -2 3 4 -5 ...