1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
|
1 | |
Разработка алгоритма и программы сжатия и восстановления массива17.10.2014, 20:57. Показов 1254. Ответов 17
Метки нет (Все метки)
Добрый день! форумчане помогите сделать работу, возможно кому-то такая задача попадалась:
Массив (0,1) целых чисел. Разработать алгоритмы сжатия и восстановления массива. В целях анализа считать вероятность последовательности длиной К пропорциональной К. Полное задание в файлах. Мне хотя бы написать алгоритмы написать программу на С++ постараюсь сам, но если кто-то может написать алгоритм и программу буду благодарен.
0
|
17.10.2014, 20:57 | |
Ответы с готовыми решениями:
17
Восстановления алгоритма, исходного кода (декомпилирование) старой программы на Фортран Разработка программы резервного сохранения/восстановления реестра с возможностью отслеживания изменений Разработка алгоритма и программы работы с двумерными массивами Разработка алгоритма и программы работы с двумерными массивами |
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
17.10.2014, 21:29 | 2 |
lvn1975, не совсем понял задачу, но может как вариант брать каждые 32 числа этого массива и делать из них один инт, т.е. грубо говоря вместо 32 чисел у нас хранится 1 число(битовая маска).
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
|
17.10.2014, 21:45 [ТС] | 3 |
я понял, что массив состоит из 0 и 1 длиной К, надо вот этот массив сжать и затем восстановить, а как и по какому алгоритму не знаю . Уже голову сломал. Предмет называется разработка эффективных алгоритмов. Подошел к преподу, ничего не объяснил даже направление в какое направление двигаться.
0
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
17.10.2014, 21:49 | 4 |
lvn1975, ну вот значит можно каждые 32 числа хранить в одном инте.
Можно проще, но тогда память сократится всего в 2 раза -- это хранить позиции числа, вхождений которого меньше, т.е. если нулей меньше то хранишь позиции нулей, иначе - единиц.
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
|
17.10.2014, 21:57 [ТС] | 5 |
SlavaSSU, Ты знаешь как? Можешь написать?
Я тут старшекурсника спросил, он предположил с помощью метода Хоффмана, но там рассматривается либо с текстом, либо с файлами. Мне кажется здесь, что-то проще, т.к. мы только начали изучать. Может я ошибаюсь.
0
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
||||||
17.10.2014, 22:47 | 6 | |||||
Сообщение было отмечено lvn1975 как решение
Решение
lvn1975, запарили сообщения не отправляться!!!
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
||||||||||||||||
17.10.2014, 23:55 [ТС] | 7 | |||||||||||||||
Я так понял здесь вводим длину массива
int m;
сокращение идет по нулям. А вывод сокращенного массива нет. Правильно я понял или нет?
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
22.10.2014, 20:59 | 8 | |||||
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
22.10.2014, 21:00 | 9 | |||||
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
22.10.2014, 21:01 | 10 | |||||
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
|
22.10.2014, 22:54 [ТС] | 11 |
Боюсь это сложно, Я понял в задаче, что создается одномерный массив из 0 и 1 длиной К, а сжать массив на величину пропорционально длины К. т.е. например массив длиной 8, а сжатие на 2 , если 32 то на 8,
01101001, здесь можно сократить 1 и 0 повторяющиеся 2 раза, вот как убрать их и создать новый массив 010101, примерно так.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
22.10.2014, 23:34 | 12 |
Такой массив есть чередование последовательностей из нулей и единиц. Мне кажется, что именно об их длине идет речь, а не о длине массива. И сказано, что чем длиннее последовательность, тем больше вероятность ее появления в массиве.
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
|
23.10.2014, 21:38 [ТС] | 13 |
Мне кажется, что нам еще не могут дать такие сложные задачи. Мы только начали изучать алгоритмы, надо построить алгоритм и на основе его написать программу на языке Си++, а Вами написана программа слишком круто для начинающего студента, но спасибо за интересные решения.
Добавлено через 11 минут Интересно алгоритм Хаффмана подойдет?
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
24.10.2014, 00:53 | 14 |
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
||||||
24.10.2014, 21:45 [ТС] | 15 | |||||
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
||||||||||||||||
26.10.2014, 16:07 [ТС] | 16 | |||||||||||||||
SlavaSSU, Спасибо твой вариант интересен
По какому ты алгоритму делал (как он называется) И можешь объяснить как это работает словами
0
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
|
26.10.2014, 16:25 | 17 |
lvn1975, m надо присвоить 32 а не k / 2.
нет названия у алгоритма, просто берешь и хранишь 32 числа, каждое из которых 0 или 1 в одном беззнаковом инте.
0
|
1 / 1 / 1
Регистрация: 17.10.2014
Сообщений: 17
|
||||||
26.10.2014, 17:37 [ТС] | 18 | |||||
SlavaSSU, А если длина массива 10.
можешь объяснить как работает эта часть программы
0
|
26.10.2014, 17:37 | |
26.10.2014, 17:37 | |
Помогаю со студенческими работами здесь
18
Разработка эскиза, алгоритма и программы в модуле Graph Разработка модели, алгоритма и программы информационного обмена вычислительной системы Реализация алгоритма сжатия JPEG Реализация алгоритма сжатия (LZW) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |