Se poate partiţiona {1,2,...,n} în două submulţimi pentru care sumele corespunzătoare să aibă diferenţa dată? Care ar fi minimul acestei diferenţe? Câte astfel de partiţii există (teoremă, program C++) şi cum pot fi generate într-o anumită ordine?
Simpla verificare directă a unui rezultat este mai degrabă neinteresantă şi de obicei încercăm să corelăm verificarea manuală cu aspecte de context; putem găsi astfel posibilităţi de simplificare în program, dar poate rezulta (mai interesant!) şi ideea de a o lua de la capăt…
Vizăm generarea s-partiţiilor angajând metode generale: căutare "brute force" şi backtracking. Formulăm în C++ şi în Prolog (incluzând un mecanism intern de backtracking, Prolog permite "rezumarea" programului la specificarea condiţiilor necesare pentru soluţii).
În programarea logică, ideea de bază este exprimată prin Algorithm = Logic + Control. Componenta Logic vizează descrierea problemei: ce fapte se cunosc şi ce reguli trebuie folosite de către "Control" pentru a deduce ulterior alte fapte (noi).
Componenta Control reprezintă însuşi interpretorul - ori fiinţa raţională - care va "executa" programele; interpretorul de Prolog "aplică" metoda deducerii (plecând de la baza de date furnizată de program) şi un mecanism intern de backtracking recursiv - căutând sistematic valori cu care să "înlocuiască" necunoscutele implicate în scopul satisfacerii clauzelor curente.
Media dinamică
Linux şi aplicaţii Web
în 24 de ore
Orar şcolar
documentaţie Sphinx
ŞahStartTemp