Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Ilya Potrepalov                      2:5020/400     31 Jan 2002  09:41:58
 To : Max Alekseyev
 Subject : Re: Посоветуйте алгоритм, очень надо!!!
 -------------------------------------------------------------------------------- 
 
 Hi, Max!
 
 Max Alekseyev сообщил в новостях следующее:
 
 >  AN> Дана строка, состоящая из скобок 4-х видов (,),[,]
 >  AN> Определить минимальное число скобок, которые надо подставить в строку,
 >  AN> чтобы она стала "правильной"... Hапример: "[ ( ] )" - "неправильная
 >  AN> строка" "[ ] ( [ ] )" - "правильная", полученная путем подстановки в
 >  AN> "неправ-ю" 2-х скобок! Интересует алгоритм... условие - сложность <=
 >  AN> O(N*N), а желательно O(N*log N)
 
 [skip]
 
 > Задача решается динамическим программированием.
 
 [skip]
 
 Можно и так. Hо тут можно и по-другому попробовать. Сам я далек от этого, но
 кое-какие мысли у меня появились.
 
 Для начала нужно сделать предварительную обработку исходной строки:
 1. Закрывающиеся скобки в начале строки дополнить открывающимися (и удалить,
 т.е. дальше их учитывать не нужно).
 2. Открывающиеся скобки в конце строки дополнить закрывающимися (и удалить;
 напимер: '])[[()(][()][))[([' -> '[]()[[()(][()][))[]()[]' ->
 '[[()(][()][))' ).
 3. Удалить внутренние парные скобки (напимер: '[[()(][()][))' -> '[[(][))',
 это довольно просто и быстро).
 
 А далее... Тут можно проанализировать, как человек решает такую задачу.
 
 Я ее решаю так: смотрю на начальную последовательность открывающихся скобок
 (до первой закрывающейся) и ищу _максимально_ длинную соответствующую
 последовательность закрывающихся скобок. И тоже их 'сокращаю'. Hапример:
 
 ([)])[(])]  ->  ([  )  ])   [(])]        (пробелы для наглядности)
 ([(([)]])])  ->  ([(  ([)]]  )])
 [[(][))  ->  [  [  (  ]  [))    или   [[  (  ][  )  )   - оба разбиения дают
 одинаковый результат
 ([(([)]]))][)  ->  (  [(([  )]  ]))]  [)
 
 Очевидно, что просто удалить соответствующие последовательности нельзя. А вот
 то, что они разбивают исходную строку на отдельные фрагменты - нужно учесть.
 
 Следующий этап - дополнение 'внутренних' фрагментов (а вот тут уже пошла
 рекурсия). Продолжая крайний пример:
 
 (  [(([  )]  ]))]  [) -> (  [(([  ()[]  ]))]  [)  ->  ([)  -> (  [  )  ->
  []  ) -> все. Добавили всего 3 скобки.
 
 Вот где-то в этом направлинии и нужно идти, имхо. Hо тут еще нужно доказать,
 что такой алгоритм будет давать лучшее решение.
 
 ps. Если будете делать реализацию, то хотелось бы увидеть ее. Можно и письмом.
 
 --
 WBR, Ilya           from Nizhnevartovsk
      e-mail: nc@mailru.com
              2:5079/35.12@fidonet
 
 --- ifmail v.2.15dev5
  * Origin: In God we trust. Others must pay. (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Посоветуйте алгоритм, очень надо!!!   Aleksey Nilov   24 Jan 2002 20:46:28 
 Re: Посоветуйте алгоритм, очень надо!!!   Grandalf Gray   25 Jan 2002 19:44:12 
 Re: Посоветуйте алгоритм, очень надо!!!   Grandalf Gray   25 Jan 2002 20:52:01 
 Re: Посоветуйте алгоритм, очень надо!!!   Aleksey Nilov   26 Jan 2002 03:00:47 
 Re^2: Посоветуйте алгоритм, очень надо!!!   Sergey Politov   26 Jan 2002 06:50:50 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   25 Jan 2002 23:15:54 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   26 Jan 2002 03:40:34 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   25 Jan 2002 22:08:58 
 Re: Посоветуйте алгоритм, очень надо!!!   Grandalf Gray   26 Jan 2002 12:46:42 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   26 Jan 2002 02:30:30 
 Re: Посоветуйте алгоритм, очень надо!!!   Grandalf Gray   26 Jan 2002 12:46:43 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   25 Jan 2002 22:04:28 
 Посоветуйте алгоритм, очень надо!!!   Aleksey Nilov   29 Jan 2002 01:53:54 
 Посоветуйте алгоритм, очень надо!!!   Max Alekseyev   28 Jan 2002 16:49:14 
 Re: Посоветуйте алгоритм, очень надо!!!   Sergey Politov   29 Jan 2002 06:34:29 
 Re: Посоветуйте алгоритм, очень надо!!!   Aleksey Nilov   31 Jan 2002 02:43:30 
 Re: Посоветуйте алгоритм, очень надо!!!   Ilya Potrepalov   31 Jan 2002 09:41:58 
 Re: Посоветуйте алгоритм, очень надо!!!   Ilya Potrepalov   31 Jan 2002 13:11:33 
 Re^2: Посоветуйте алгоритм, очень надо!!!   Sergey Politov   01 Feb 2002 06:43:50 
 Re: Re^2: Посоветуйте алгоритм, очень надо! !!   Ilya Potrepalov   01 Feb 2002 15:46:36 
 Посоветуйте алгоритм, очень надо!!!   Sergey Ezhov   26 Jan 2002 14:03:07 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   27 Jan 2002 02:28:38 
 Посоветyйте алгоpитм, очень надо!!!   Sergey Ezhov   27 Jan 2002 22:36:11 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   28 Jan 2002 14:08:18 
 Re: Посоветyйте алгоpитм, очень надо!!!   Sergey Politov   30 Jan 2002 07:23:33 
 Посоветyйте алгоpитм, очень надо!!!   Sergey Ezhov   30 Jan 2002 22:54:47 
 Посоветуйте алгоритм, очень надо!!!   Nickita A Startcev   30 Jan 2002 02:18:38 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   27 Jan 2002 02:39:02 
 Re: Посоветyйте алгоpитм, очень надо!!!   Sergey Politov   27 Jan 2002 06:23:28 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   28 Jan 2002 03:18:38 
 Re: Посоветyйте алгоpитм, очень надо!!!   Sergey Politov   28 Jan 2002 06:46:54 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   29 Jan 2002 15:25:24 
 Посоветyйте алгоpитм, очень надо!!!   Oleg Yanchenkov   30 Jan 2002 22:03:08 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   01 Feb 2002 02:45:34 
 re: Посоветyйте алгоpитм, очень надо!!!   Valentin Kononov   30 Jan 2002 00:07:05 
 Re: Посоветyйте алгоpитм, очень надо!!!   Andrew Ezhguroff   31 Jan 2002 01:40:00 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   31 Jan 2002 02:19:28 
 Re^2: Посоветyйте алгоpитм, очень надо!!!   Sergey Politov   31 Jan 2002 05:25:21 
 re: Посоветyйте алгоpитм, очень надо!!!   Valentin Kononov   31 Jan 2002 23:44:04 
 re:Посоветyйте алгоpитм, очень надо!!!   Valentin Kononov   04 Feb 2002 00:16:36 
 Re: re:Посоветyйте алгоpитм, очень надо!!!   Ilya Potrepalov   05 Feb 2002 07:58:56 
 Посоветyйте алгоpитм, очень надо!!!   Oleg Yanchenkov   28 Jan 2002 08:30:07 
 Re: Посоветyйте алгоpитм, очень надо!!!   Sergey Politov   29 Jan 2002 06:08:00 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   29 Jan 2002 15:27:40 
 Re: Посоветуйте алгоритм, очень надо!!!   Michael Leontyev   29 Jan 2002 14:46:19 
 Посоветyйте алгоpитм, очень надо!!!   Stanislav Aranovsky   30 Jan 2002 04:25:30 
 Re: Посоветyйте алгоpитм, очень надо!!!   Michael Leontyev   30 Jan 2002 10:45:03 
 Re^2: Посоветуйте алгоритм, очень надо!!!   Sergey Politov   30 Jan 2002 07:55:24 
 Посоветyйте алгоpитм, очень надо!!!   Oleg Yanchenkov   01 Feb 2002 00:31:21 
 Re: Посоветуйте алгоритм, очень надо!!!   Zapadinsky Anatoly \\(ZAB\\)   30 Jan 2002 18:06:09 
 Re: Посоветуйте алгоритм, очень надо!!!   Michael Leontyev   30 Jan 2002 18:59:35 
Архивное /ru.algorithms/6486c15d1e37.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional