Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 2
Регистрация: 13.12.2015
Сообщений: 261

Конечный автомат

25.02.2017, 19:58. Показов 1197. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание типа нахождения кратчайшей последовательности вставок и удалений одного символа превращающий данную цепочку x в такую же данную y, что такое автомат знаю, но вот все не получается написать это
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2017, 19:58
Ответы с готовыми решениями:

Конечный автомат
Доброго времени суток! Помогите, пожалуйста, разобрать задачу. Дано условие: C*C(aa)b(a)*(aa|ab) Для этого нужно написать задачу на...

Конечный автомат
Всем доброго времени суток! Я в программировании кое-что понимаю, но именно что "кое-что". По болезни пропустил недели две,...

Конечный автомат
Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 -> bq2, q1 -> q2, q1 -> cq2, q2 -> aq3 и др. Нужно написать...

4
0 / 0 / 2
Регистрация: 13.12.2015
Сообщений: 261
26.02.2017, 20:25  [ТС]
поступает на вход строка x=accddcd и y=abcd, есть состояния удалить и вставить, непонятен триггер, по какому принципу вообще определять краткость вставки/удаления
0
56 / 56 / 31
Регистрация: 24.10.2016
Сообщений: 186
26.02.2017, 20:49
Цитата Сообщение от Reska Посмотреть сообщение
непонятен триггер
Вам нужно смотреть на шаг вперед (можно и на несколько), удалять когда следующие символы совпадают, вставлять когда не совпадают.
0
0 / 0 / 2
Регистрация: 13.12.2015
Сообщений: 261
28.02.2017, 10:14  [ТС]
это расстояние Левенштейна и тут работа со строковыми переменными, а нужны автоматы, в общем на помощь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <vector>
#include <algorithm>
 
template <typename T>
typename T::size_type levenshtein_distance(const T & src, const T & dst) {
  const typename T::size_type m = src.size();
  const typename T::size_type n = dst.size();
  if (m == 0) {
    return n;
  }
  if (n == 0) {
    return m;
  }
 
  std::vector< std::vector<typename T::size_type> > matrix(m + 1);
 
  for (typename T::size_type i = 0; i <= m; ++i) {
    matrix[i].resize(n + 1);
    matrix[i][0] = i;
  }
  for (typename T::size_type i = 0; i <= n; ++i) {
    matrix[0][i] = i;
  }
 
  typename T::size_type above_cell, left_cell, diagonal_cell, cost;
 
  for (typename T::size_type i = 1; i <= m; ++i) {
    for(typename T::size_type j = 1; j <= n; ++j) {
      cost = src[i - 1] == dst[j - 1] ? 0 : 1;
      above_cell = matrix[i - 1][j];
      left_cell = matrix[i][j - 1];
      diagonal_cell = matrix[i - 1][j - 1];
      matrix[i][j] = std::min(std::min(above_cell + 1, left_cell + 1), diagonal_cell + cost);
    }
  }
 
  return matrix[m][n];
}
Пример использования:
 
// Может быть использован любой подходящий контейнер (напр. std::vector).
// В нашем примере использованы строки:
...
const std::string src = "125";
const std::string dst = "521";
const std::string::size_type distance = levenshtein_distance(src, dst);
...
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
28.02.2017, 11:26
Цитата Сообщение от Reska Посмотреть сообщение
это расстояние Левенштейна и тут работа со строковыми переменными, а нужны автоматы, в общем на помощь
Reska, вы задаёте вопрос так, будто все знают задачу лучше вас. Результат вы видите. Я всё же рискну порассуждать. Это потому наверное, что я понятия не имею о чём тут речь.
Допустим имеем последовательность:
Цитата Сообщение от Reska Посмотреть сообщение
x=accddcd и y=abcd
Ясно что сумма длин это количество операций соответствующее полному удалению х и вставке y целиком. Не вдаваясь в логические подробности я предлагаю искать в x последовательность не обязательно строго подряд идущих символов соответствующую таковой в y. То есть начиная с символа y[0] ='a' ищем в х. В данном случае находим сразу. Затем ищем y[1]='b' и не находим до конца x, то то есть пора искать y[2]='c' и т.д.
Поскольку с мы находим как x[1] то нужно увеличить счетчик найденных и сравнить его с предыдущим максимальным значением (если больше не найдём совпадений из y в х).
Что касается автоматов, то тут их есть. Представьте, что вместо 'с' нам попался опять 'a' - это значит, что продолжить нужно с его позиции. Это можно сделать рекурсивно или используя стек...
В общем не принимайте близко к сердцу, если я не о том. Даже в этом случае, надеюсь, что вы расскажете подробнее, а люди подтянутся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2017, 11:26
Помогаю со студенческими работами здесь

Конечный автомат
Нужно написать программу работы данного автомата.

Детерминированный конечный автомат
Всем привет,у меня такая проблема: Написал в билдере код,но не получается запустить в VS 10,никак не могу понять в чем же проблема. И кому...

Конечный автомат. Построить транслитератор
Построить транслитеротор: кириллица-&gt;латиница, а также конечный автомат, осуществляющий обратную транслитерацию: латиница-&gt;кириллица в...

Конечный автомат для строк
Конечный автомат для строк используя switch. Помогите пожалуйста...

Конечный автомат. Лабиринт (поиск в глубину)
Пусть лабиринт задан двумерным массивом bool, индексы ячеек соответствуют их координатам. Ячейка содержит true, если она проходима, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru