C, PHP, VB, .NET

Дневникът на Филип Петров


Категория ‘Информатика’

* Бързо степенуване

Публикувано на 03 юли 2023 в раздел Информатика.

Степенуването е основна математическа операция и е очаквано да се използва често. Интуитивната реализация на алгоритъм за изчисление на [mathi]x^{n}[/mathi] би била „умножаваме [mathi]x[/mathi] по себе си [mathi]n[/mathi] на брой пъти“. Тоест нещо подобно на следното: Прочети още…

.

 


* Алгоритъм на Флажоле-Мартин за определяне на кардиналност на мултимножество

Публикувано на 29 юни 2023 в раздел Информатика.

Мултимножествата са множества, за които повторенията от елементи се отчитат и са от значение. Например мултимножеството {1, 1, 1, 2} е различно от мултимножеството {1, 1, 2}, защото имат различни елементи в него. Подредбата обаче няма значение. За такива множества често ни интересува т.нар. кардиналност (мощност): броят на различните елементи. Или казано по-просто – ако вземем едно цялото количество от всички обекти в едно мултимножество, колко от тях са различни? Прочети още…

.

 


* Векторна графика – основни приложения

Публикувано на 21 декември 2020 в раздел Информатика.

Векторните изображения най-често се създават чрез дефиниране на точки в декартова координатна система, които се свързват с линии (прави или криви по определена формула) и така формират различни геометрични фигури в различни цветове и запълвания. За разлика от растерните изображения, векторните могат да бъдат увеличавани произволно много, без това да води до загуба на качество (което разговорно наричаме „пикселизация“). Причината за това е, че при всяко увеличение формулите се преизчисляват и изображението се начертава наново. Друго основно тяхно предимство е, че при по-прости изображения – такива, които лесно могат да се опишат с математически формули – файловете са с много малък размер. Обратно – подразбира се, че когато изображението е много сложно (например снимка), тогава описването му чрез векторна графика става изключително тежко и тогава векторната графика става неподходяща. Прочети още…

.

 


* Килобайт, кибибайт и други мерни единици за информация

Публикувано на 07 октомври 2020 в раздел Информатика.

Случвало ли Ви се е да си купите твърд диск или мобилен телефон, които са рекламирани с един капацитет на паметта, но реално да ви излиза, че е по-малък? Вижте например следната картинка – това е твърд диск, който е рекламиран като „4TB“, но в операционната система Windows се показва като 3,63:

В тази статия ще обясня защо се получава така (TLDR: проблемът е в Microsoft, но не само). Прочети още…

.

 


* Исторически аспект за формирането на понятието „Операционна система“

Публикувано на 12 април 2018 в раздел Информатика.

При първите компютри за решаването на всеки нов проблем се е изисквала фундаментална промяна на цялата система. При механичните компютри това е означавало реално да се създаде нов хардуер. След 1924 г. започва все по-честа употреба на „бананови връзки“ (промяна на окабеляването и съответно програмната логика чрез преместването електрически кабел от една връзка в друга чрез жак). Въпреки тези улеснения, нуждата от физическа промяна в системата е била основна спирачка за високо бързодействие на компютри, които трябва да изпълняват повече от една програма. След въвеждането на регенеративна оперативна памет от Джон Атанасов (1937 – 1942 г.) започва да се появява теоретична възможност за цифрово програмиране на компютритe, т.е. да могат да решават различни задачи без да има нужда от промяна в хардуера им. Прочети още…

.

 


* Преоразмеряване на изображения

Публикувано на 01 март 2018 в раздел Информатика.

Нека за удобство приемем, че работим със стандарт RGB24. Вече знаем, че за всеки пиксел се пазят три числа в интервала [0; 255]. Искаме на направим т.нар. „upscale“ – да направим изображението по-голямо (с по-голям брой пиксели по хоризонтала и вертикала). Има три популярни алгоритъма за извършване на това и ще разгледаме всеки един от тях поотделно с прости примери.

Алгоритъм „най-близък съсед“ (nearest neighbor)

Нека започнем с едно примерно квадратче от 2х2 пиксела: Прочети още…

.

 


* Ентропно кодиране

Публикувано на 10 септември 2017 в раздел Информатика.

Дотук се запознахме само отчасти с компресирането на определен тип данни – изображения – при това прекалено общо. Сега ще разгледаме по-подробно компресиране без загуба на информация, като основно ще се фокусираме върху примери с текст, но основите ще са приложими към всякакви данни. Прочети още…

.

 


* Корекция на грешки с код на Хеминг

Публикувано на 04 септември 2017 в раздел Информатика.

Когато четем и записваме информация на хард диска на локалния компютър, рядко се замисляме „какво ще се случи ако стане проблем“. Грешките се случват толкова рядко, че този проблем е пренебрежим. В някои езици за програмиране компилаторите ни принуждават да следим за Input/Output изключения при четенето на файлове, но това често ни се струва като досадно задължение. И все пак проблемът е фундаментален – имаме изпращане на информация от една точка в друга през комуникационен канал, но какво ще се случи ако има някаква грешка по време на преноса? Вече се досещате, че проблемът е често наличен при преноса на информация между два компютъра през мрежа, но може и да се изненадате, че същия проблем е наличен дори при комуникацията между централем процесор и рам памет! Прочети още…

.

 


* Алгоритми – словесно описание и блок-схеми

Публикувано на 22 октомври 2015 в раздел Информатика.

Основно понятие при обработката на информация е алгоритъм. Всички изчисления в една компютърна програма се правят по предварително определени правила. Съвкупност от логически свързани правила ще наричаме алгоритъм. Като формална дефиниция ще приемем следната:

Деф. Алгоритъм наричаме система от правила, които определят последователност от изчислителни операции, прилагането на които води до решението на дадена задача. Прочети още…

.

 


* Запазване на изображения

Публикувано на 22 октомври 2015 в раздел Информатика.

Дотук видяхме, че когато запазваме информация на компютър (която не е изначало в основния за компютъра двоичен код), ние извършваме процес на кодиране (преобразуване на информацията в двоичен код посредством алгоритъм), а когато я четем извършваме процес на декодиране (превръщане на двоичния код обратно в удобна за ползване от човек информация). Изображенията не правят изключение. Когато искаме да запазим графики или снимки на компютър, ние ги кодираме в определен графичен файлов формат. Тук ще разгледаме най-популярните графични формати – BMP, GIF, PNG, JPEG и TIFF. Прочети още…

.