привет, дружыщща. ситуация такая: специальность: прикладная математика и информатика. на отлично сдал курсовую на тему "Реализация эффективного алгоритма сжатия данных на примере алгоритма Хаффмана". алгос написал на С++. теперь через 13 дней предзащита диплома. препод говорит что на основе курсовой надо диплом строить, причем он вполне даже доволен моей темой курсовой. а что еще к курсовой привинтить я не знаю. вроде бы все уже сказал в ней, что хотел. разве что вот для интереса на JAVA написал простенький GUI, и через него сделал возможность работать с C++ дллкой своей через нэйтив методы, в которой этот алгос, собссно, ранее и реализовал. т.е. теперь можно через GUI фейс кодить/декодить исходные файлы. но я жутко не уверен, что подобный винегрет сойдет за диплом. сейчас время еще немного есть, за неделю полторы можно чего-нибудь другое реализовать, но не знаю что. дружыщща, подсобите советом, как быть -- делать как говорит мой научный руководитель и расширять курсовую до диплома или же хвататься за голову и искать оригинальную _новую_ тему для диплома пока еще не поздно, т.к. вышеописанная штука в дипломы не годится? спасибо большое за любые комментарии и пояснения.
[offtop] Странно, у нас в МГТУ требуется в качестве диплома выбирать нечто новое: новая проблема, новый подход к решению проблемы, или оригинальное применение метода для решения задач, для которых данный метод ранее не применялся. А тут Хаффман... [/offtop] Не вижу смысла использовать данную тему, по причине отсутствия новизны, но это ИМХО. Если уж интересуешься сжатием, попробуй себя в фрактальном сжатии или вейвлет-преобразовании без потерь. Но на это нужно время...
слушай, что говорит руководитель, он скорее всего понимает, что нужно для защиты на этом хаффмане уже столько дипломов было защищено.. слабовата тема, но защититься можно.
Xerx я не из Москвы и не из МГТУ. это раз. как таковое программирование по сути я сам все изучил и мне этот универ с его дипломом просто для галочки, при всем при том что то что нам преподавали за все эти годы в плане IT - прошлый век. это двас. я ж не виноват что так отсюда, думаю и "плясать" соответствующе, т.е. не сильно мудря с темой, хотя, как я выше уже честно признался, мне данная тема не особенно импонирует. а что посерьезнее выбрать для диплома не знаю, а время работает уже против меня... в этом и проблема, собственно. с темами вообще дебилизм у нас кстати: если кто-то работает в промышленных организациях, то все поголовно взяли "оптимизации произодственных процессов". об этом я не имею ни малейших понятий, т.к. на производстве не работал. да и они тоже не знают, но темы взяли) некоторые взяли (сейчас смеяться будете -- создание сайтофф на пхп. при том что никакой пхп в ходе учебы не изучался, его не было в программе. и потом, я не уверен что кто-нибудь из нашей группы напишет что-то толковое и нетривиальное. вот и выходит, что раз первое и второе мне не подходит, то надо взять что-то третье. кроме меня алгос Хаффмана вообще никто не взял и подобных "математически-ориентированных" тем очень мало, разве что некоторые взяли что-то связанное с линейной алгеброй у научного руководителя с кафедры геометрии и алгебры. но это уже другая история.
varnie Я тоже не и Москвы, но из МГТУ Про уровень института и предметов нужно было сразу уточнить. Насчет Хаффмана - его реализации достигают 30-50 строк на C. Соответственно, сам по себе в качестве диплома он вообще никак. Однако можно эту тему развить. Например реализовать программу обучения данного метода. Есть программа DESTutor (DES Algorithm Tutor by BlackWolf ), в ней очень оригинально поставлен процесс обучения данному алгоритму шифрования - пошагово рассказывается что и как, дается возможность выполнить мини-задания. Плюс она выполняет непосредственно шифрование. Можно сделать нечто подобное: пошагово, с построением визуального дерева, ну и т.д. Достаточно просто и точно оригинально. P.S. Само собой речь идет об адаптивном сжатии. DESTutor я выложил тут - http://atercattus.info/temp/destutor.rar
Новую тему реализовать по любому не успеешь. Предложение Xerx весьма оригинально, вполне можно попробовать.
Xerx да, уровни универов разные... DESTutor уже изучаю, и идея мне подобного рода нравится. осталось придумать, каким образом визуальное дерево строить, т.к. если его строить для любых исходных данных, то оно будет очень внушаемых размеров, а это визуально не смотрится. наверно стОит сделать так: сделать по подобию DESTutor-a: окошко и в нем неск кнопок. по первой осуществляем сжатие/расжатие указанного исходного файла. визуально ничего не отображаем, никаких деревьев. по второй кнопке предлагаем ввести исходные данные ограниченной небольшой длины. и здесь уже строим само дерево и все отображаем. наглядность типа. здесь же встраиваем как сжатие так и расжатие, как у DESTutora по нажатию кнопки "шифрование и дешифрование". хотя, для расжатия потребуется как-то ввести исходные "сжатые" данные и прочую информацию (веса текущих букв итд), а это будет громоздко имхо. вроде бы все четко! спасибо за идею, сейчас все продумаю еще... ps: осталось придумать каким образом дерево визуально представлять, чтобы это было негромоздко и смотрелось хорошо.
да, верно. еще вопрос - какие шаги визуально отображать? само построение дерева и только, или все промежуточные шаги по порядку: построение поддеревьев, подсчет весов исходных символов, а уже затем отрисовывать построенное дерево? если ограничиться вводом исходных данных через какой-нибудь Edit итд, то скорее всего данные будут очень маленькой длины, а следовательно, данный алгос Хаффмана будет неэффективным, т.к. таблица весов всех символов "перекроет" собой длину сжатой последовательности исходных символов. или это для наглядного процесса обучения не так важно, и здесь важно отобразить само построенное дерево и сам процесс его построения?
т.е. будет что-то в духе: окно для ввода исходных данных. пользователь вводит туда произвольный текст. жмет кнопку "далее". на след. состоянии окна отображается список всех различных символов введенных данных с их частотами. создаем начальные листья. сортируем их. отображаем их. жмем "далее". здесь по каждому нажатию кнопки "демонстрация" мы пошагово строим поддеревья, и обновляем их визуальные представления, покуда не придем к единому дереву. далее на след шаге мы создаем коды для всех символов. опять же, это все последовательно пошагово, на каждое нажатие кнопки "демонстрация" создаем один код на один символ. и так для всех символов. далее на след. состоянии формы по нажатию "демонстрация" пробегаемся по всему исходному тексту и кажд его символ заменяем на соотв. код. и это все опять же пошагово отображаем в поле для итогового результата. хм, больно шагов много получается. громоздко. а если еще предусмотреть такой же процесс и для наглядной демонстрации расжатия, то эта громоздкость умножается на 2. или же некоторые шаги неитерировать а сразу же выводить промежуточные результаты, а вверху формы предварить текущий шаг его описанием чтобы всем все было ясно. например, зачем жать 10 раз кнопку, чтобы последовательно построить 10 кодов? можно просто написать вверху текст о текущем шаге и все, предоставить построенные 10 кодов. или это не айс будет уже? как все утрясу в голове, так сразу попробую взяться за реализацию...
Конечно все по шагам. Так, как бы ты это делал в ручную на листке бумаге. Важно именно показать сам процесс, а то что не особо сожмет - не тот класс данных (малая длина). На буфере символов в 20 самое оно. Просто заполнить его с реальным преобладанием 2-3 символов. По второму посту. Проще написать некоторое множество процедур, выполняющих по одному шагу. И потом реализовать все через конечный автомат.
еще небольшое уточнение хочу... с сжатием и визуальным его представлением все понятно. а вот как быть с расжатием? в таком случае пользователь должен будет ввести 1. таблицу частот для текущего случая 2. сжатые данные если и то, и другое вводить ему наобум, то при расжатии в большинстве случаев получится бессмысленый набор символов. а хочется ведь иметь осмысленный текст. или это уже мелочи и на них мне не стОит обращать внимания?
вероятно, стоит предоставить юзеру возможность выбрать сжатый файл из имеющихся, а таблица частот должна быть в сжатом файле вроде (хотя бы инициализация).
slow_at_work да, можно. я об этом уже тож думал. но получится что нужно будет нагенерить неск. сжатых файлов. для демонстрации сойдет. хотя такой подход и заставляет юзера работать с уже _кем-то_ сжатыми данными, и интерес поэтому ИМХО теряется. ну да ладно, фиг с ним, с интересом. больше вариантов я думаю никаких нету.
Ну он может сначала сжать файл, потом его же расжать. Как я понимаю, это наиболее интересный вариант. Т.е. грубо говоря будут у тебя 3 кнопки сжать, расжать, сжать и расжать
varnie Пусть он расжимает то, что перед этим сжал Ну или пусть вводит произвольные данные, прога их быстро сжимает и выдает на вход "расжимальщика".
varnie я с СSC бился примерно два года; туеву кучу всякого бреда перемолоть пришлось и в конце я её своим дипломом сделал) добрый тебе совет: не меняй коней на переправе - твой ломак - препод доволен и забей, вот чисто для себя новые темы копай)
UbIvItS [offtop] Да мы вроде уже давно решили с автором, что не будем сочинять новую тему... А что за CSC? Просто интересно [/offtop]