Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kostya990
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
#1

Алгоритм Райта - C++

02.06.2013, 19:17. Просмотров 493. Ответов 2
Метки нет (Все метки)

Нужна помощь. Нужно реализовать алгоритм Райта. О нем ничего не могу найти, может кто то что то знает. Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 19:17     Алгоритм Райта
Посмотрите здесь:

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab () { int s1 = 0; int s2 =...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар) - C++
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм - Pascal
Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм 1. Объясни, что будет напечатано программой Program...

Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке [a,b] с шагом h. - Free Pascal
Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке с шагом h. Написать программу: F=3+tgx Мой...

Составить алгоритм-вычисление квадрата суммы двух чисел и алгоритм для вычисления функции - Pascal ABC
Здравствуйте!Мне нужно все с самого начала и точно,помогите пожалуйста! 1.составить алгоритм-вычисление квадрата суммы двух чисел.

Построить алгоритм ДО и алгоритм ПОКА дя вычислений значения функции на отрезке [а,b] с шагом h. Написать программу - Pascal
F=3+tg x

Алгоритм удаления невидимых линий и алгоритм закраски Гуро - Графика и игры
Как применить алгоритм удаления невидимых линий и алгоритм закраски Гуро? в данном коде, заранее спасибо за помощь #include...

Алгоритм грубой силы или алгоритм Бойера-Мура - Turbo Pascal
Составить алгоритм поиска заданного слова в тексте. Слово и текст являются массивами символов заданной длины. Если заданное слово...

Алгоритм поиска образа в строке. Алгоритм Бойера-Мура - Python
# Лабораторная работа № 1 # Поиск образа в строке def forming_d(pattern): """ Формируем массив d.""" d = new_p...

Написать алгоритм по блок схеме (Алгоритм метода Ньютона) - Pascal
Прошу помогите, очень срочно! Сижу на экзамене!

Разработайте алгоритм и программу, реализующую этот алгоритм. Исходные данные вводите из текстового файла. Результаты работы программы также помести - Pascal
Разработайте алгоритм и программу, реализующую этот алгоритм. Исходные данные вводите из текстового файла. Результаты работы программы...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.06.2013, 19:59     Алгоритм Райта #2
Clarke-Wright savings heuristic?
kostya990
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
02.06.2013, 21:49  [ТС]     Алгоритм Райта #3
Нет алгоритм Райта - алгоритм поиска в символьной строке.

Добавлено через 23 минуты
Я нашел кое что. Алгоритм Райта - это алгоритм поиска в символьной строке. Эмпирический алгоритм, оптимизированный под английские тексты. Сравнивает последний символ, потом первый, потом средний, потом все остальные; при несовпадении — сдвиг по Хорспулу. Сдвиг по Хорспулу это грубо говоря таблица в которой заранее определено на сколько символов сдвигать наш, сравниваемый шабло, для каждого символа. Вот код. Я только не могу понть какое значение имеет ASIZE.
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
#include<iostream>  
#include <string>
using namespace std;
 
  void preBmBc(char *x, int m, int bmBc[]) {
   int i;
 
   for (i = 0; i < ASIZE; ++i)
      bmBc[i] = m;
   for (i = 0; i < m - 1; ++i)
      bmBc[x[i]] = m - i - 1;
}
void RAITA(char *x, int m, char *y, int n) {
   int j, bmBc[ASIZE];
   char c, firstCh, *secondCh, middleCh, lastCh;
 
   /* Preprocessing */
   preBmBc(x, m, bmBc);
   firstCh = x[0];
   secondCh = x + 1;
   middleCh = x[m/2];
   lastCh = x[m - 1];
 
   /* Searching */
   j = 0;
   while (j <= n - m) {
      c = y[j + m - 1];
      if (lastCh == c && middleCh == y[j + m/2] &&
          firstCh == y[j] &&
          memcmp(secondCh, y + j + 1, m - 2) == 0)
         OUTPUT(j);
      j += bmBc[c];
   }
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru