Как стать автором
Обновить
0
0
Алексей Николаевич @k1lla

C++

Отправить сообщение

Декодирование JPEG для чайников

Время на прочтение9 мин
Количество просмотров275K

[FF D8]


Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:


Jpeg file in hex editor


Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла: Google favicon


Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.


Даже не зная, как происходит кодирование, мы уже можем кое-что извлечь из файла.


[FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.


Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов ":" и ")", т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.

Читать дальше →
Всего голосов 413: ↑408 и ↓5+403
Комментарии140

Самый главный алгоритм

Время на прочтение1 мин
Количество просмотров4.6K
От всей души рекомендую видео лекцию А. Степанова (человека создавшего STL): «о истории алгоритма нахождения наибольшего общего делителя», это популярная лекция оказалась бесконечно интересной, в ней рассказывается, на примере этого алгоритма о развитие алгоритмического знания всего человечества с эпистемологической точки зрения в разрезе истории с античных времен с Пифагора до наших дней до Кнута.

image
Посмотреть можно здесь:
часть1
video.yandex.ru/users/ya-events/view/129
часть2
video.yandex.ru/users/ya-events/view/128
Читать дальше →
Всего голосов 107: ↑102 и ↓5+97
Комментарии62

Как работают алгоритмы сортировки

Время на прочтение1 мин
Количество просмотров22K
Иногда для понимания того, как работает та или иная вещь, лучше один раз увидеть, чем сто раз услышать.

Замечательный сайт www.sorting-algorithms.com позволяет увидеть, как сортируются данные разными алгоритмами. Вы сможете посмотреть анимацию в зависимости от алгоритма, исходных данных.



Все это бегает и сортируется прямо на ваших глазах!

Работает на Google App Engine, видимо, поэтому и лежит от посетителей с «Хабра».
Всего голосов 185: ↑151 и ↓34+117
Комментарии63

Алгоритм Флойда — Уоршелла

Время на прочтение6 мин
Количество просмотров173K
Алгоритм Флойда — Уоршелла — алгоритм для нахождения кратчайших расстояний между всеми вершинами взвешенного графа без циклов с отрицательными весами с использованием метода динамического программирования. Это базовый алгоритм, так что тем кто его знает — можно дальше не читать.

Этот алгоритм был одновременно опубликован в статьях Роберта Флойда (Robert Floyd) и Стивена Уоршелла (Stephen Warshall) в 1962 г., хотя в 1959 г. Бернард Рой (Bernard Roy) опубликовал практически такой же алгоритм, но это осталось незамеченным.
Читать дальше →
Всего голосов 132: ↑126 и ↓6+120
Комментарии33

История одной красивости или псевдотрёхмерное изВращение

Время на прочтение2 мин
Количество просмотров1K
Давным-давно, когда компьютеры были уже не такими большими, но тактовые частоты всё ещё измерялись единицами мегагерц, мой пытливый ум случайно
изобрёл некий весьма любопытный эффект. Взгляните на картинку и представьте, что вся эта совокупность точек вертится самым невероятным образом.

Застывшее изВращение

Конечно, для современных видеокарт такая задача является примитивной, однако в те времена на 3.5 мегагерцовом «Cпектруме» о подобных мощностях можно было лишь помечтать. Так что забудьте о графических процессорах, матрицах вращения и нереально ресурсоёмких вычислениях и попробуйте хотя бы примерно прикинуть, каким образом можно реализовать вот такую красивость.

Любопытно? Тогда добро пожаловать под кат!

Читать дальше →
Всего голосов 75: ↑66 и ↓9+57
Комментарии62

Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе

Время на прочтение3 мин
Количество просмотров434K
Из многих алгоритмов поиска кратчайших маршрутов на графе, на Хабре я нашел только описание алгоритма Флойда-Уоршалла. Этот алгоритм находит кратчайшие пути между всеми вершинами графа и их длину. В этой статье я опишу принцип работы алгоритма Дейкстры, который находит оптимальные маршруты и их длину между одной конкретной вершиной (источником) и всеми остальными вершинами графа. Недостаток данного алгоритма в том, что он будет некорректно работать если граф имеет дуги отрицательного веса.

Для примера возьмем такой ориентированный граф G:

image

Читать дальше →
Всего голосов 91: ↑62 и ↓29+33
Комментарии31

Кластеризация: алгоритмы k-means и c-means

Время на прочтение3 мин
Количество просмотров177K
Добрый день!

Как и обещал, продолжаю серию публикаций о технологии Data Mining. Сегодня хочу рассказать о двух алгоритмах кластеризации (k-means и c-means), описать преимущества и недостатки, дать некоторые рекомендации по их использованию. Итак, поехали…

Кластеризация — это разделение множества входных векторов на группы (кластеры) по степени «схожести» друг на друга.

Кластеризация в Data Mining приобретает ценность тогда, когда она выступает одним из этапов анализа данных, построения законченного аналитического решения. Аналитику часто легче выделить группы схожих объектов, изучить их особенности и построить для каждой группы отдельную модель, чем создавать одну общую модель для всех данных. Таким приемом постоянно пользуются в маркетинге, выделяя группы клиентов, покупателей, товаров и разрабатывая для каждой из них отдельную стратегию (Википедия).

Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии9
12 ...
103

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность