Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.81
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
#1

Кодирование фразы Методом Шеннона-фано и Хаффмена - VBA

08.12.2011, 16:57. Просмотров 5957. Ответов 17
Метки нет (Все метки)

Привет всем))))
помогите мне написать программу,пожалуйста))))
мне необходимо написать программу на языке Visual Basic for Applications лучше в Excel про "кодирование фразы Методом Шеннона-фано и Хаффмена" например фразы


_ПАРК_БРОМ_БОРЩ_ЛУПА_ТРУД_

http://www.cyberforum.ru/vba/thread614663.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 16:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Кодирование фразы Методом Шеннона-фано и Хаффмена (VBA):

Закодировать фразу "На траве дрова" методом Фано, Хафмана, Шенона и Хеминга
Закодировать фразу "На траве дрова" методом Фано,Хафмана,Шенона и Хеминга....

Оптимальное кодирование, методы Шеннона-Фано и Хаффмена
Помогите, плиз.... а то не знаю, как решать.... << Составьте программу...

Кодирование методом Шеннона-Фано и Хаффмана
Добрый день уважаемые форумчане, не могу выполнить задание по дискретной...

Кодирование Шеннона-Фано
Окей мы посчитали вероятности символов и прочие штуки.. Далее нужно создать...

Кодирование Шеннона-Фано
Как реализовать метод Шеннона-Фано без использования дерева?

17
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
08.12.2011, 19:49 #2
в каком объеме помощь то нужна
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 20:34  [ТС] #3
ну если возможно то буду рад готовой программе,а если нет,то любой помощи
если честно то в программировании я ничего не смыслю а прогу нужно сдавать
0
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
08.12.2011, 20:40 #4
если в
Цитата Сообщение от Yakov112 Посмотреть сообщение
в программировании я ничего не смыслю
то и
Цитата Сообщение от Yakov112 Посмотреть сообщение
то любой помощи
как таковой зачем
просто


Цитата Сообщение от Yakov112 Посмотреть сообщение
буду рад готовой программе
кстати, кажется это два в одном надо
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 20:48  [ТС] #5
ну немного я понимаю,но это очень-очень мало((((

да в чем заключается
два в одном
?
0
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
08.12.2011, 21:20 #6
Цитата Сообщение от Yakov112 Посмотреть сообщение
Методом Шеннона-фано и Хаффмена
вот буковка "И" тут скорей всегл указывает, что это 2 метода, хотя и очень похожи
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 21:48  [ТС] #7
возможно и разные но сходятся к одному конечно, а вот что касается разности кодов в программе это я уже не представляю


gaw, так ты мне можешь помочь с ее написанием???ПОЖАЛУЙСТА,ПОМОГИ
0
Казанский
13870 / 5633 / 1434
Регистрация: 24.09.2011
Сообщений: 8,840
08.12.2011, 22:14 #8
Цитата Сообщение от Yakov112 Посмотреть сообщение
лучше в Excel
http://www.cyberforum.ru/ms-excel/thread374886.html
1
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
08.12.2011, 22:15 #9
ну раз
Цитата Сообщение от Yakov112 Посмотреть сообщение
любой помощи
тогда
Допустим, у нас есть следующая таблица частот:
15 7 6 6 5
А Б В Г Д

Этот процесс можно представить как построение дерева, корень которого — символ с суммой вероятностей объединенных символов, получившийся при объединении символов из последнего шага, его n0 потомков — символы из предыдущего шага и т. д.

Чтобы определить код для каждого из символов, входящих в сообщение, мы должны пройти путь от листа дерева, соответствующего этому символу, до корня дерева, накапливая биты при перемещении по ветвям дерева. Полученная таким образом последовательность битов является кодом данного символа, записанным в обратном порядке.

Для данной таблицы символов коды Хаффмана будут выглядеть следующим образом.
А Б В Г Д
0 100 101 110 111

Поскольку ни один из полученных кодов не является префиксом другого, они могут быть однозначно декодированы при чтении их из потока. Кроме того, наиболее частый символ сообщения А закодирован наименьшим количеством бит, а наиболее редкий символ Д — наибольшим.


ну естественно, что таблица частот - скоолько раз встречается буква
1
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 22:38  [ТС] #10
Казанский, а можно комментарии попросить? в программе что каждый процесс объясняет?
0
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
08.12.2011, 22:51 #11
Казанский
а вот в коде по ссылке, там двоичные коды по какому приципу набраны

я знаком с методом, о котором говорил Юра, а тут что то не вруб
0
Казанский
13870 / 5633 / 1434
Регистрация: 24.09.2011
Сообщений: 8,840
08.12.2011, 22:52 #12
Программа, как видите, не моя. В функции code каждая буква заменяется на соответствующую строку нулей и единиц. То есть считается, что дерево уже выращено и закодировано.
1
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 23:09  [ТС] #13
теперь стало понятнее что к чему, а как тогда составить код дерева кодирования,причем для каждой фразы свое?
0
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
08.12.2011, 23:21 #14
Цитата Сообщение от Казанский Посмотреть сообщение
дерево уже выращено
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
08.12.2011, 23:49  [ТС] #15
gaw, не у оно то предполагаемо выращено,разве не так? а по методу то для каждого примера свое дерево,как я помню с пар,а тут не так вроде или я чего то не так понимаю
0
gaw
6632 / 1499 / 169
Регистрация: 09.01.2010
Сообщений: 4,272
09.12.2011, 00:26 #16
Цитата Сообщение от YuraAAA Посмотреть сообщение
Допустим, у нас есть следующая таблица частот:
15 7 6 6 5
А Б В Г Д
т.е. исходную фразу надо просчитать -- сколько раз в ней чего встречается
и получится вот такая таблица, понятно что для "коловорот" --- к-1 л-1 в-1 р-1 т-1 о-4
дальше надо считать вероятности к,л,в,р,т-1/9 о-4/9
в то же время для "колобок" это будет уже др таблица
0
Yakov112
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
09.12.2011, 00:43  [ТС] #17
это я понимаю,но вот в программе куда этот поиск делся? там не ищется вероятность встречи букв, там сразу функцию запускают, хотя я еще не до конца разобрался и пока не понял все что там делается
0
R Dmitry
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
09.12.2011, 11:20 #18
Я тоже как то делал для себя метод шифрования, приложу слегка упрощенный вариант
может кому и сгодиться
Visual Basic
1
2
3
4
5
6
7
Public Function codepass(st As String)
Dim i&
For i = 1 To Len(st)
codepass = codepass & Format((Asc(Mid(st, i, 1)) + 2) * 2 + i + Len(st), "00000")
Next
codepass = StrReverse(codepass)
End Function
Visual Basic
1
2
3
4
5
6
7
8
Public Function decodePass(st As String)
Dim i&, x&
st = StrReverse(st)
For i = 1 To Len(st) Step 5
x = x + 1
decodePass = decodePass & Chr((CLng(Mid(st, i, 5)) - x - (Len(st) / 5)) / 2 - 2)
Next
End Function
1
09.12.2011, 11:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 11:20
Привет! Вот еще темы с решениями:

Кодирование Фано-Шеннона
Добрый день. Есть недочет в коде, цель закодировать и декодировать строку...

Код Шеннона-Фано кодирование и декодирование
Нужно с помощью матлаб написать программу, которая кодирует буквы, цифры ...

Кодирование+декодирование методами Шеннона-Фано и Хемминга
Требуется сабж на Delphi. Дается файл, который следует закодировать, потом...

Шифрование методом Шеннона-Фано
Помогите пожалуйста создать на Java код который будет шифровать методом Шеннона...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

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