Суперчеловек - убийца супермутантов
 
[Most Recent Entries] [Calendar View] [Friends View]

Thursday, March 20th, 2014

    Time Event
    12:43a
    Сделал синтез комбинаторов брутфорсом. Т.е. сгенерировать все термы длины < n+1, редуцировать их и сравнить правую часть с данной. Редукция на схемовских списках, в базисе SKI.

    Пока не могу понять, как легче всего вычислить арность комбинатора. На данный момент применяю к k переменным (от 1 до K=26), и смотрю, остаются ли базисные комбинаторы в правой части. Но не все генерированные термы являются комбинаторами. Как их отличить от комбинаторов с арностью выше К?

    Перебор для n=5 занимает 1 с. Для n=6 должно быть не более 10*25=250 с, но я не дождался. Значит, получился бесконечный цикл редукции.

    Вот, где дебаггер пригодился. Таки да, классика жанра, комбинатор SII(SII), т.е. ММ - дупликатор, применённый к себе (Ma = aa).

    Сейчас я останавливаю редукцию, когда она сходится (ещё одна редукция не меняет терм). А здесь она не сходится, а осциллирует: SII(SII) = I(SII)(I(SII)) = SII(SII) = I(SII)(I(SII)) = ... Надо продумать другую эвристику для проблемы останова. Но так, чтобы не сильно замедляла перебор.

    << Previous Day 2014/03/20
    [Calendar]
    Next Day >>

About LJ.Rossia.org