Текст и последовательность операций

Тема в разделе "WASM.A&O", создана пользователем sonjia, 21 апр 2005.

  1. sonjia

    sonjia New Member

    Публикаций:
    0
    Регистрация:
    4 май 2004
    Сообщения:
    4
    Короче, есть такая задачка...

    Дана текстовая строка X состоящая из букв некого алфавита. Над этой строкой можно производить следующие операции:

    1.Замена участка текста с позиции P и длинной L на произвольный текст той же длинны (частный случай – замена одной буквы).

    2.Вставка в позицию P произвольного текста длинной L.

    3.Удаление куска текста длинной L в позиции P.

    4.Инверсия текста в позиции P и длинной L (например: ABCDEF может превратиться в ADCBEF)

    5.Дубликация текста в позиции P и длинной L в новую позицию P1 (например: ABCDEF – ABCDEABCF)

    В результате определенной последовательности действий получается новая строка Y.

    Как решить прямую задачу (т.е. дана X и последовательность действий) понятно! А вот как решить обратную задачу (т.е. дана X и Y, надо найти все возможные последовательности действий, которые привели к преобразованию X в Y)???

    Такая задача вообще решена??? Что можно почитать по этой теме? В какую сторону капать?
     
  2. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    sonjia





    _Все_ возможные последовательности действий найти не удастся, т.к. их бесконечное количество(в частности благодаря 2 и 3) Может речь идет о минимальной последовательности?
     
  3. sonjia

    sonjia New Member

    Публикаций:
    0
    Регистрация:
    4 май 2004
    Сообщения:
    4
    Это понятно! Там вводятся некоторые ограничения на объем поиска!
     
  4. ash

    ash New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2004
    Сообщения:
    52
    Адрес:
    Latvia
    Stiver





    Вряд ли, т.к. минимальная последовательность всегда <=2:



    0 при X==Y;

    1 при X!=Y, strlen(X)==strlen(Y);

    1 или 2 при X!=Y, strlen(X)!=strlen(Y);
     
  5. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    ash





    Так это смотря относительно чего минимальная. Ты предлагаешь минимировать количество операций, логичней наверное минимировать количество измененных знаков. В общем случае можно например присвоить каждой операции определенную "стоимость" (зависящую от количества знаков) и минимировать суммарную стоимость преобразования X в Y.
     
  6. sonjia

    sonjia New Member

    Публикаций:
    0
    Регистрация:
    4 май 2004
    Сообщения:
    4
    Более точная постановка задачи...



    Дана текстовая строка X состоящая из букв некого алфавита. Над этой строкой можно производить следующие операции редактирования:

    1. Замена подстроки с позиции P и длинной L на произвольную подстроку той же длинны.

    2. Вставка в позицию P произвольного текста длинной L.

    3. Удаление подстроки длинной L в позиции P.

    4. Инверсия текста в позиции P и длинной L.

    5. Дубликация подстроки в позиции P и длинной L в новую позицию P1.

    В результате определенной последовательности действий получается новая строка Y.

    Каждая операция имеет свою цену. Эта цена зависит от длинны подстроки (L), ее позиции (P) и от ряда других факторов (все это задается перед началом работы).

    Необходимо найти все последовательности операций редактирования с суммой их цен:

    1. находящийся в некотором заданном интервале.

    2. если такой не задан, то искать с минимальной суммой цен (но эта сумма цен должна быть больше или равна некоторого заданного минимального значения, частный случай – минимальное значение равно 0).
     
  7. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    sonjia



    Эта задача эквивалентна проблеме поиска минимального пути на заданном рельефе(т.е. дается функция образующая рельеф, две точки и надо найти путь с минимальным суммарным перепадом высоты) с поправкой на в данном случае дискретный рельеф. А это в свою очередь одна из стандартных задач нелинейного/дискретного оптимирования. Существует довольно много литературы, ищи в сторону route finding, path planning и т.д. Известные простые алгоритмы/эвристики например A* search, best first search.
     
  8. sonjia

    sonjia New Member

    Публикаций:
    0
    Регистрация:
    4 май 2004
    Сообщения:
    4
    Спасибо, буду копать... Еще есть идеи???...