Содержание
- 2. ПРЯМОЙ ПОИСК самый простой и не эффективный поиск. не проводит анализа подстроки наиболее эффективно работает при
- 3. ПРЯМОЙ ПОИСК
- 4. ПРЯМОЙ ПОИСК
- 5. S – текст, n – количество символов текста O – образ, m – количество символов образа
- 6. если f==m то УСПЕХ, вернуть i; i++; кц ПРЯМОЙ ПОИСК
- 7. ПРЯМОЙ ПОИСК Самый неэффективный случай: Оценка времени работы алгоритма O(n*m)
- 8. Описан Кнутом и Праттом и независимо от них Моррисом Результаты опубликованы совместно в 1977 г. Алгоритм
- 9. Алгоритм Кнута, Морриса и Пратта для повышения эффективности алгоритма необходимо, чтобы сдвиг на каждом шаге алгоритма
- 10. обозначим j - количество совпадений, текущего сравнения (j = 3) значение j зависит только от вида
- 11. Для образа строится таблица сдвигов d[m] d[0] = -1, d[1] = 0 d[j] – длина самой
- 12. Примеры таблиц сдвигов для различных образов: КМП – АЛГОРИТМ. Предварительная обработка образа
- 13. m = длина образа о; j = 1, k=0 d[0] = -1; d[1] = 0; Пока
- 14. Если j==m-1 то закончить выполнение цикла k++; d[j+1]=k; j++; кц КМП – АЛГОРИТМ. Предварительная обработка образа
- 15. КМП – АЛГОРИТМ. Пример сдвиг на j – d[j]
- 16. КМП – АЛГОРИТМ. Пример Чем больше совпадений по тексту и меньше совпадений по строке
- 17. Алгоритм Боуэра-Мура Предложен в 1977
- 18. Сравнение символов образа с символами текста осуществляется с конца образа Если несовпадение произошло на символе, не
- 19. Алгоритм Боуэра-Мура Если несовпадение произошло на символе, встречающемся в образе, то выполняется сдвиг на величину, равную
- 20. Алгоритм Боуэра-Мура Перед работой создается массив d, размерность которого равна размеру использованного алфавита
- 21. Алгоритм Боуэра-Мура. Пример
- 22. Алгоритм Боуэра-Мура. Пример Чем меньше совпадений, тем быстрее
- 23. ПОИСК ПОДСТРОКИ В СТРОКЕ Определить таблицы сдвигов для КМП-алгоритма и алгоритма Боуэра – Мура На каждом
- 24. ПОИСК В МАССИВЕ Неупорядоченный массив – прямой поиск (O(n)) Упорядоченный массив – бинарный поиск (О(log2 n))
- 25. Вход – X[n], a 1. F = 0, L = n-1 2. Если F>L то вернуть
- 26. M =1/2* (F+L) ? F + 1/2*(L-F) Если искомый элемент S: 1/2 ? (S-X[F])/(X[L] – X[F])
- 27. BST - деревья Binary Search Tree - деревья двоичного поиска. Родитель Правый потомок Левый потомок
- 28. Правила организации элементов: BST - деревья Родитель Правый потомок Левый потомок Родитель Родитель >
- 29. BST - деревья Реализация описания узла дерева в Си typedef struct node{ int data; struct node
- 30. BST - деревья 7
- 31. BST - деревья 7 9
- 32. BST - деревья 7 9 8
- 33. BST - деревья 7 9 8 6
- 34. BST - деревья 7 9 8 6 3
- 35. BST - деревья 7 9 8 6 3 5
- 36. BST - деревья 7 9 8 6 3 5 20
- 37. BST - деревья 7 9 8 6 3 5 20 15
- 38. BST - деревья 7 9 8 6 3 5 20 15 18
- 39. BST - деревья 7 9 8 6 3 5 20 15 18 1
- 40. BST - деревья 7 9 8 6 3 5 20 15 18 1 2
- 41. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10
- 42. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 43. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 44. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 45. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 46. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 47. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 48. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 49. BST - деревья 7 9 8 6 3 5 20 15 18 1 2 10 19
- 50. Деревья бинарного поиска можно определить таким образом чтобы индексы строились в точности так же… Пример использования
- 51. Пример использования BST-деревьев для поиска слов Д 1 Деревья бинарного поиска можно определить таким образом чтобы
- 52. BST – деревья. Алгоритм вставки элемента Вставка (Node ** Root, int key) Если *Root - пустой,
- 53. BST – деревья. Алгоритм вставки элемента иначе Если key >= *Root->data то Вставка (*Root->right, key) иначе
- 54. Вставка1 (Node ** Root, int key) Если *Root – пустой то выделить память под *Root *Root
- 55. Node *temp = *Root; Пока (temp не пуст) нц Если (key>=temp->data) то Если (temp->right - пуст)
- 57. Скачать презентацию