<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fxposter&#039;s wave &#187; Алгоритмы</title>
	<atom:link href="http://blog.fxposter.org/tag/%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc%d1%8b/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fxposter.org</link>
	<description>Stories about Ruby, JavaScript, Objective-C and other cool tools</description>
	<lastBuildDate>Sun, 30 Oct 2011 20:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C++: substring search</title>
		<link>http://blog.fxposter.org/2007/06/07/c-substring-search/</link>
		<comments>http://blog.fxposter.org/2007/06/07/c-substring-search/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 20:47:57 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/06/07/c-substring-search/</guid>
		<description><![CDATA[Последняя лабораторная, которую я делал достаточно долго и до сих пор не уверен в 100%-й правильности ее работы, потому прошу всех протестировать эту лабу. Как я раньше писал, по Компьютерным Информационным Технологиям у нас 3 лабораторные работы + экзамен, но те, кто сделал эти 3 работы раньше чем нужно, могут попросить препода дать им 4-ую [...]]]></description>
			<content:encoded><![CDATA[<p>Последняя лабораторная, которую я делал достаточно долго и до сих пор не уверен в 100%-й правильности ее работы, потому прошу всех протестировать эту лабу.</p>
<p>Как я раньше писал, по Компьютерным Информационным Технологиям у нас 3 лабораторные работы + экзамен, но те, кто сделал эти 3 работы раньше чем нужно, могут попросить препода дать им 4-ую лабу, сделав которую можно не идти на экзамен. Моя 4-ая лаба - реализация одного из алгоритмов поиска всех вхождений подстроки в строке, а именно - реализация алгоритма Бойера-Мура (Boyer-Moore). В этом алгоритме поиск в лучшем случае (при удачной реализации) выполняется за сублинейное время (т.е., за O(k*n), где k = const, k &lt; 1). Проблема реализации заключалась в том, что:</p>
<ul>
<li>алгоритм нам объясняли с использованием строк с символами [1...n] (т.е. первый символ строки находится на [1]-й позиции), а мне пришлось делать с обычными c&#8217;шными строками [0...n-1]; на первый взгляд кажется - ну и в чем тут проблема&#8230; проблема в сложности алгоритма&#8230; его и просто по книжке нелегко реализовать, а тут еще и добавляются всякие проблемы - там единицу не добавил, там - не отнял и т.д.</li>
<li>алгоритм нам объяснили не полностью, а где-то на 2/3&#8230; оставшуюся часть пришлось выводить самому&#8230; над алгоритмом, который в итоге был реализован функцией в 20 строчек, я сидел часа 4&#8230; вроде заработало&#8230;</li>
<li>ну и все остальное по мелочи :)</li>
</ul>
<p>Сейчас я выложу чисто исходники самого алгоритма (а также еще одного алгоритма, который было легко реализовать на основе уже сделанных функций), а завтра - сделаю какую-нибудь консольную программу для того, чтобы сам алгоритм можно было удобно тестировать.</p>
<p>Файлы: <a href="http://blog.fxposter.org/wp-content/uploads/2007/06/string.rar">source</a> (string.h + string.cpp).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/06/07/c-substring-search/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GIF ↔ BMP</title>
		<link>http://blog.fxposter.org/2007/05/06/gif-bmp/</link>
		<comments>http://blog.fxposter.org/2007/05/06/gif-bmp/#comments</comments>
		<pubDate>Sun, 06 May 2007 16:27:07 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[BMP]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/05/06/gif-bmp/</guid>
		<description><![CDATA[Как я и обещал - продолжение рассказа о сдаче лабораторных по &#8220;Методам и средствам компьютерных информационных технологий&#8221;. Сегодня будет рассказ о [почти] последней лабораторной. Для начала - сдавал я эту лабу полторы недели назад, просто все не было времени и/или желания писать об этом.  Пришел я на пару к параллельной группе, т.к. ждать своего урока [...]]]></description>
			<content:encoded><![CDATA[<p>Как я и <a href="/2007/04/10/ungif-to-gif-bmp/">обещал</a> - продолжение рассказа о сдаче лабораторных по &#8220;Методам и средствам компьютерных информационных технологий&#8221;. Сегодня будет рассказ о [почти] последней лабораторной.</p>
<p>Для начала - сдавал я эту лабу полторы недели назад, просто все не было времени и/или желания писать об этом.  Пришел я на пару к параллельной группе, т.к. ждать своего урока у этого препода мне было влом. Пришел и офигел. Целая куча народу стоит над ним и ждет, пока он примет у кого-нибудь лабу и перейдет к следующему. А препод особо не спешил, сидел с каждым минут по 15-20 (это мне потом рассказали)&#8230; Ну я влез вместо кого-то и в итоге показал лабу 3-м из всего списка желающих. Показывал сначала на своих файлах (которые благополучно захватил из дома). Он посмотрел, посмотрел и говорит &#8220;а можешь поменять кое-что в проге и заново скомпилировать&#8221;&#8230; Я ему - &#8220;ну, если уж очень сильно нужно - то да, но мне тут долго настраивать нужно и т.д.&#8221;. В итоге препод сдался, но заставил меня создавать в Paint&#8217;е файлы и потом кодировать их туда-сюда. Моя программа благополучно все обработала и я со спокойной душой ушел домой. Правда перед этим препод пообещал дать еще одно задание, &#8220;вместо того, чтобы сдавать экзамен&#8221; - потому я и написал, что это была &#8220;почти последняя&#8221; лаба.</p>
<p>Теперь о самой лабе - кодирование в GIF я написал намного быстрее, чем раскодирование. Но самое главное - конвертация форматов сейчас реализуется через мой &#8220;графический формат&#8221;. Т.е. я сделал формат. который просто хранит нужные мне данные так, как мне удобно. Т. е. на самом деле GIF → BMP - это GIF → raw image (мой формат) → BMP. Raw-данные хранятся в оперативной памяти, и, хоть это и достаточно затратно по памяти, но дает дополнительные возможности. Например, можно подключить любой другой формат - нужно только дописать раскодирование этого формата в raw и кодирование из raw&#8217;а в этот формат. Собственно, таким образом я и добавил в программу формат BMP.</p>
<p>По просьбе читателей - я выложу все исходники GIF ↔ BMP, только предупреждаю - если вы захотите из этого сделать норм. конвертер - то все, написанное мной прийдется пересматривать и дорабатывать, причем достаточно сильно. Если действительно соберетесь делать что-то подобное - напишите мне - я помогу, и учавствовать в проекте буду, но только после того, как закончится семестр (а это будет после 10-го июня + экзамены).</p>
<p>Файлы: <a href="/wp-content/uploads/2007/05/gifbmp.rar">source</a>, <a href="/wp-content/uploads/2007/05/gifbmp.exe">exe</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/05/06/gif-bmp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unGIF превращается GIF ↔ BMP</title>
		<link>http://blog.fxposter.org/2007/04/10/ungif-to-gif-bmp/</link>
		<comments>http://blog.fxposter.org/2007/04/10/ungif-to-gif-bmp/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 07:29:43 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[BMP]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/04/10/ungif-to-gif-bmp/</guid>
		<description><![CDATA[Такая вот у нас третья лаба по &#8220;Методам и средствам компьютерных информационных технологий&#8221;. :) Как вы помните декодировщик gif&#8217;а уже готов, теперь вот надо это записать в bmp-файл + научиться кодировать в gif-формат (т.е. от кодирования данных пл методу LZW никуда не денешься). У меня вот такой вопрос к читателям - как вы думаете, как [...]]]></description>
			<content:encoded><![CDATA[<p>Такая вот у нас третья лаба по &#8220;Методам и средствам компьютерных информационных технологий&#8221;. :)</p>
<p>Как вы помните декодировщик gif&#8217;а уже готов, теперь вот надо это записать в bmp-файл + научиться кодировать в gif-формат (т.е. от кодирования данных пл методу LZW никуда не денешься). У меня вот такой вопрос к читателям - как вы думаете, как это красивее всего сделать? В теории может не только gif будет, вдруг мне что-то в голову взбредет. :) Поэтому напрашивается реализация в следующем виде:</p>
<blockquote><p><small>(графический формат)</small>  ↔ <small>(некоторый несжатый формат)</small> ↔ <small>(графический формат)</small></p></blockquote>
<p>На практике вижу 2 минуса:</p>
<ol>
<li>Перекодирование все же будет дольше, чем если его делать напрямую</li>
<li>Перекодируемый файл, а точнее его расжатый аналог будет находится в памяти</li>
</ol>
<p>С первым смирится можно. А вот со вторым - стоит ли это делать? Не будет ли это слишком накладно в плане расхода памяти?</p>
<p>Вот с этими вопросами я и обращаюсь к вам. :) Жду комментов. И побольше.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/04/10/ungif-to-gif-bmp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>unGIF (part II)</title>
		<link>http://blog.fxposter.org/2007/04/09/ungif-part-ii/</link>
		<comments>http://blog.fxposter.org/2007/04/09/ungif-part-ii/#comments</comments>
		<pubDate>Mon, 09 Apr 2007 17:22:30 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[LZW]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/04/09/ungif-part-ii/</guid>
		<description><![CDATA[Как и обещал, сегодня будет рассказ о том, как я сдавал свой ungif. Началось все просто замечательно - я забыл что и на каком месте находится в хедере gif-файла. В итоге препод меня оставил (сказал - давай, готовься) и ушел к своей дипломнице. Я в это время всё выписал что мне нужно было в тетрадку [...]]]></description>
			<content:encoded><![CDATA[<p>Как и обещал, сегодня будет рассказ о том, как я сдавал свой <a href="http://blog.fxposter.org/2007/04/04/ungif/">ungif</a>.</p>
<p>Началось все просто замечательно - я забыл что и на каком месте находится в хедере gif-файла. В итоге препод меня оставил (сказал - давай, готовься) и ушел к своей дипломнице. Я в это время всё выписал что мне нужно было в тетрадку и&#8230; Стал ждать&#8230; Причем ждал не я один, кроме меня сдать ему лабы хотело еще как минимум 3 человека. После десяти минут ожидания я все-таки напомнил преподу о себе, на что получил ответ &#8220;ну тут диплом&#8230; подожди еще 5 минут.&#8221;. Сколько эти 5 минут длились я скромно умолчу. Наконец он подсел ко мне и я быстренько ему рассказал, что, как и где в gif-файле находится и показал работоспособность моей проги. Далее я боялся только одного - что он меня спросит, как это всё кодируется. Потому что строить таблицу <a href="http://ru.wikipedia.org/wiki/LZW">LZW</a> алгоритма для gif-файла у меня желания не было никакого. Но у него в голове созрел другой коварный план: во время рассказа о структуре gif&#8217;ов я ему сказал, что там присутствуют некоторые блоки, которые я игнорировал (т.к. мне они действительно были не нужны). Во время разбора файла я ему показывал, что там должно было находится. И вот он решил потестить мою прогу - удалить кусок файла, который я &#8220;пропускал&#8221; и посмотреть, как заработает моя программа. После удаления этого куска прога зависла&#8230; :( И препод, сказав &#8220;трудись дальше&#8221;, ушел просматривать лабораторную одногрупника. А я полез в коды&#8230; При этом думая - где же я так мог лохануться. В общем, оказалось, что я ему неправильно истолковал один момент при считывании из файла (момент касался считывания таблицы цветов). После удаления из файла куска, который действительно можно было удалить, дело пошло лучше - файл открылся, и к тому же правильно.</p>
<p>Потом был рассказ небольшой на тему: какие именно файлы мой ungif обрабатывает неправильно и почему. В самом конце состоялся показ одного из моих комментариев в кодах:</p>
<pre><code class="cpp">// ToDo</code></pre>
<p>И прозвучала моя фраза - &#8220;ну я это к третьей лабе доделаю, ок?&#8221;. После чего в блокноте препода была поставлена дата и моя фамилия, что свидетельствовало о том, что вторая лабораторная по КИТам сдана.</p>
<p><em><strong>PS.</strong> Или это всем влом лабы делать, или это я такой шустрый. Но вторую лабу я тоже сдал первый из потока. :)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/04/09/ungif-part-ii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>unGIF</title>
		<link>http://blog.fxposter.org/2007/04/04/ungif/</link>
		<comments>http://blog.fxposter.org/2007/04/04/ungif/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 11:09:16 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[LZW]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/04/04/ungif/</guid>
		<description><![CDATA[Вчера закончилась моя долгая борьба с форматом GIF. Как вы помните, это была вторая лабораторная работа по предмету &#8220;Компьютерные Информационные Технологии&#8221;. Первая лабораторная работа (adaptive huffman) у меня делалась примерно 3 дня. На вторую ушло больше 4 недель. Правда две из них лаба спокойно пылилась у меня на винчестере, потому что никаких соображений по поводу [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера закончилась моя долгая борьба с форматом GIF. Как вы <a href="http://blog.fxposter.org/2007/03/08/archiving/">помните</a>, это была вторая лабораторная работа по предмету &#8220;Компьютерные Информационные Технологии&#8221;.</p>
<p>Первая лабораторная работа (adaptive huffman) у меня делалась примерно 3 дня. На вторую ушло больше 4 недель. Правда две из них лаба спокойно пылилась у меня на винчестере, потому что никаких соображений по поводу того, что именно там было неправильно у меня не было. И вот после моего дня рождения меня пробило - я вьехал, что именно там было не так. Оказалось, что достаточно всего одного блока <em>if-else</em>, чтобы алгоритм стал хотя бы нормально завершаться.</p>
<p>До этого момента работа алгоритма проверялась по схеме пашет-не пашет и коды писались в консольном приложении. Как только он стал &#8220;пахать&#8221; - все быстро перенеслось на &#8220;окошки&#8221;. После чего я впал в ступор - алгоритм работал, но выдавал явно не то, что я от него хотел, т.е. на форму выводилось изображение, но не то, которое мне было нужно.</p>
<p>Все это происходило позавчера. Сдать я все хотел на следующий день - потому началась &#8220;погоня за ошибками&#8221;. В 4 ночи, после жесткого дебага всего алгоритма декодирования изображения в gif-файле (напомню, что в GIFе изображение кодируется с помощью алгоритма LZW), программа приняла относительно рабочий вид - изображение выводилось&#8230; Даже понять, что изображено на нем можно было (не на всех файлах, правда)&#8230; <strong>Но</strong>, выводилось оно все-таки немного неправильно. После некоторого момента часть изображения начинала смещаться в непонятном направлении. Обессиленный, я отправился спать, т.к. понять, <strong>почему</strong> это всё не работает я не мог.</p>
<p>Проснувшись утром, я все-таки решил пойти на практику по КИТам и показать преподу хотя бы то, что есть. Авось у него такие &#8220;гении&#8221; уже были и он подскажет, где может быть ошибка. Надежды, конечно были маленькие, но&#8230; Ну, в общем, им не суждено было сбыться - в универе алгоритм в тот день так и не заработал.</p>
<p>Пришел домой и сел все-таки доделывать этот мой декодировщик gif&#8217;а. Началось очень интересное попиксельное сравнение моего изображения с оригиналом. Была найдена точка, с которой начинались глюки. Далее начался дебаг кода. Оказалось, что блок <em>if-else</em>, который мной был добавлен с самого начала работал все-таки немного неправильно.<em> Весь прикол в том, что этот блок к самому декодированию явно не относился. Он относился к чтению данных из файла.</em> Изменил этот блок, запустил программу и&#8230; Увидел абсолютно правильное изображение.<strong> Ура, товарищи!</strong></p>
<p>Осталось теперь это все сдать преподу. :) Но я уже доволен как слон - 4-х недельные муки закончились!</p>
<p><em><strong>PS</strong>. Я вот сейчас часто ловить себя на мысли - &#8220;а если бы я не нашел этот баг&#8230;&#8221;. Мне страшно даже подумать, что бы со мной было.</em></p>
<p><a href="http://blog.fxposter.org/wp-content/uploads/2007/04/ungif.exe" title="UnGIF">Скачать UnGIF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/04/04/ungif/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Архивирование (часть 2)</title>
		<link>http://blog.fxposter.org/2007/03/09/archiving-2/</link>
		<comments>http://blog.fxposter.org/2007/03/09/archiving-2/#comments</comments>
		<pubDate>Fri, 09 Mar 2007 21:36:44 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[Huffman]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/03/09/archiving-2/</guid>
		<description><![CDATA[Сегодня, несмотря на плохое самочувствие (уже второй день горло болит), пришел в универ и сдал свой архиватор. Меня долго мучали. :) Сначала проверили, как он работает на тестовом файлике (его содержание - &#8220;aa bbb cccc ddddd&#8221;), потом меня заставили строить на листочке дерево и сравнивать мою выходную строку (то, что в файле находится) и ту,  [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня, несмотря на плохое самочувствие (уже второй день горло болит), пришел в универ и сдал свой архиватор. Меня долго мучали. :) Сначала проверили, как он работает на тестовом файлике (его содержание - &#8220;aa bbb cccc ddddd&#8221;), потом меня заставили строить на листочке дерево и сравнивать мою выходную строку (то, что в файле находится) и ту,  что должна получится. Дойдя до 2-го символа &#8220;c&#8221; препод сказал - &#8220;Ладно, нафиг. Показывай текст программы.&#8221; :)</p>
<p>В итоге вся проверка лабы заняла минут 20-30. Раньше я по столько лабы не сдавал. :)</p>
<p><em>PS. Препод просто супер: мало того, что на лекциях классно обьясняет, так еще и на практике не сильно придирается (если где-то ошибся - поправит, где нужно - поможет). То, что принимает долго - просто проверяет, насколько человек понял алгоритм.</em></p>
<p><em>PPS. Побольше бы нам таких преподов!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/03/09/archiving-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Архивирование</title>
		<link>http://blog.fxposter.org/2007/03/08/archiving/</link>
		<comments>http://blog.fxposter.org/2007/03/08/archiving/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 01:08:12 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[Huffman]]></category>
		<category><![CDATA[LZW]]></category>
		<category><![CDATA[MinGW]]></category>
		<category><![CDATA[Visual-Studio-2005]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/03/08/archiving/</guid>
		<description><![CDATA[В предыдущем посте я писал уже об алгоритме FGK. Сегодня (точнее уже вчера) я все-таки доделал и архивирование и разархивирование. Все работает, но пока не так быстро, как хотелось бы. Ничего, посплю, поздравлю девушку с 8 марта и вечерком засяду оптимизировать. Т.к. в пятницу (да, да, мы в эту пятницу учимся) буду показывать это все [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="/2007/03/05/adaptive-huffman-coding/">предыдущем посте</a> я писал уже об алгоритме FGK. Сегодня (точнее уже вчера) я все-таки доделал и архивирование и разархивирование. Все работает, но пока не так быстро, как хотелось бы. Ничего, посплю, поздравлю девушку с 8 марта и вечерком засяду оптимизировать. Т.к. в пятницу (да, да, мы в эту пятницу учимся) буду показывать это все преподу. Может еще что-нибудь посоветует. И если совсем уж пробьет на программирование - на выходных сразу буду делать 2-ую лабу по этому предмету - раскодировать и вывести на экран изображение какого-нибудь формата. Я себе выбрал <a href="http://ru.wikipedia.org/wiki/GIF">gif</a> (построен на алгоритме <a href="http://ru.wikipedia.org/wiki/LZW">LZW</a>), так что работы мне на все выходные хватит.</p>
<p><em>Если кто знает, где можно почитать (и желательно взять реализацию)  хеш-таблицы - киньте линк.</em></p>
<p>Кстати, сегодня пришел к классному выводу - компилятор VS2005 офигенно медленный по сравнению с MinGW (windows-сборка <a href="http://ru.wikipedia.org/wiki/GCC">GCC</a>). Это показали тесты моего архиватора. Файл размером ~2,5мб VS2005 (release-режим, оптимизации особого эффекта не дали) заархивировала за 100 секунд, а MinGW (со всеми оптимизациями) - за 48 секунд. Есть над чем задуматься&#8230; Нет, мою любимую студию я не брошу - эргономичность у нее просто супер. Но если нужна будет скорость - компилировать буду MinGW&#8217;шкой.</p>
<p><small><a href="http://blog.fxposter.org/wp-content/uploads/2007/03/huffman.exe" title="Архиватор (~300кб, MinGW)">Архиватор (~300кб, MinGW)</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/03/08/archiving/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adaptive Huffman Coding</title>
		<link>http://blog.fxposter.org/2007/03/05/adaptive-huffman-coding/</link>
		<comments>http://blog.fxposter.org/2007/03/05/adaptive-huffman-coding/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 13:28:17 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Универ]]></category>
		<category><![CDATA[Huffman]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/03/05/adaptive-huffman-coding/</guid>
		<description><![CDATA[Семестр начался просто офигенно. Целая куча предметов по программированию и целая куча лабораторных, причем некоторые из них довольно сложные. Вчера вот (точнее уже сегодня) всю ночь делал одну из них, а именно архиватор. Задали вот нам написать, предложили ~10-15 вариантов кодирования. Мне пришлось взять один из 3-го (и последнего) уровня сложности (т. к. экзамен писать [...]]]></description>
			<content:encoded><![CDATA[<p>Семестр начался просто офигенно. Целая куча предметов по программированию и целая куча лабораторных, причем некоторые из них довольно сложные. Вчера вот (точнее уже сегодня) всю ночь делал одну из них, а именно архиватор. Задали вот нам написать, предложили ~10-15 вариантов кодирования. Мне пришлось взять один из 3-го (и последнего) уровня сложности (т. к. экзамен писать не охота, а для тех, кто делает не 1-й уровень имеются &#8220;поблажки&#8221; :) ).</p>
<p>Собственно - адаптивный (или динамический) алгоритм кодирования хаффмана или алгоритм FGK (Faller, Gallager, Knuth). О самом алгоритме можно почитать <a href="http://en.wikipedia.org/wiki/Adaptive_Huffman_coding">здесь</a>.</p>
<p>Я же скажу несколько слов об организации всего этого хозяйства:</p>
<ol>
<li>По-моему использовать нормальный класс дерева в данном случае - бред. Хотя если дерево построено на массиве и у k-го элемента сыновья 2k и 2k+1 - тогда что-то попробовать можно.</li>
<li>От дерева требуется быстрый обход в ширину.</li>
<li>Дереву не обязателен быстрый поиск.Хотя и желателен.</li>
</ol>
<p>Я решил не использовать свое дерево (которое я пишу по еще одной лабе по другому предмету), а написать отдельное для этого случае на базе массива из пункта 1. Попарился полночи. В итоге - архивация данных уже работает. Над разархивированием пока раздумываю. Не могу придумать алгоритм, который бы мог не записывая весь файл в оперативку, а работая с помощью буфферов, раскодировал это все&#8230; Но думаю, все же найду решение.</p>
<p><em>PS. Побольше бы таких лаб. Если бы еще не было других - неинтересных, но тоже забирающих на себя кучу времени&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/03/05/adaptive-huffman-coding/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2-й курс, 2-й семестр</title>
		<link>http://blog.fxposter.org/2007/02/12/univer-2-2-begin/</link>
		<comments>http://blog.fxposter.org/2007/02/12/univer-2-2-begin/#comments</comments>
		<pubDate>Mon, 12 Feb 2007 15:22:52 +0000</pubDate>
		<dc:creator>fxposter</dc:creator>
				<category><![CDATA[Универ]]></category>
		<category><![CDATA[Software-Engineering]]></category>
		<category><![CDATA[Алгоритмы]]></category>

		<guid isPermaLink="false">http://blog.fxposter.org/2007/02/12/univer-2-2-begin/</guid>
		<description><![CDATA[Ну вот сегодня после недолгих каникул (всего 2 недели :( ) я снова вернулся в школу универ. Увидел одногрупников, увидел обновку JackYF :), а также сегодня к нам (как оказалось - совершенно случайно) заглянул бывший одногрупник, которого, к сожалению, после 1-го курса выгнали. :( А жаль - классный паренек! Пошли с ним пива попили, пошлялись [...]]]></description>
			<content:encoded><![CDATA[<p>Ну вот сегодня после недолгих каникул (всего 2 недели :( ) я снова вернулся в <del datetime="2007-02-12T15:32:51+00:00">школу</del> универ. Увидел одногрупников, увидел <a href="http://jackyf.livejournal.com/10166.html?view=11446">обновку JackYF</a> :), а также сегодня к нам (как оказалось - совершенно случайно) заглянул бывший одногрупник, которого, к сожалению, после 1-го курса выгнали. :( А жаль - классный паренек! Пошли с ним пива попили, пошлялись по центру&#8230; Щас вот только приехал домой.</p>
<p>По поводу уроков - сегодня было 2 ленты и обе новые (в том смысле, что в предыдущем семестре их не было). Обе очень понравились - одна про &#8220;Software Engineering&#8221; (<a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F">тут</a> есть немного, потом еще ссылок накидаю), вторая про алгоритмы. И если первая представляется мне довольно легкой (там посмотрим&#8230;), то алгоритмы - это явно будет сложно (<em>зато как логику развивает!</em>).</p>
<p><em>PS. Сфоткал расписание нашего потока - теперь вот в асе задалбывают, чтобы я скинул :)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fxposter.org/2007/02/12/univer-2-2-begin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: blog.fxposter.org @ 2012-02-11 09:32:18 -->
