Форум > Препратки, сайтове, източници
А знаехте ли, че/защо....
VITAN:
ЕГН-то е измислено отдавна и сортирането се е планирало да се прави ръчно по някакви книжа.
Освен това носи и очевидна информация в себе си - дата и година на раждане + пол.
С'я:
--- Цитат на: juliang в Октомври 29, 2020, 03:42:50 pm ---Също така няма никакъв проблем два различни записа да имат еднакъв хеш индекс.
--- Край на цитат ---
Мани индексите, те са детайл от пейзажа.
Ако хеша на:
- Химна на САЩ;
- Отиваме на купоооон, на Джорджано съвпаднат, к'о прайм?
Каква песен ще изпише плеъра? Или кого ще чарджи автоматиката за авторски права?
juliang:
Алгоритъма ползван в Шазам (и който се ползва в много други програми, дори го има включен в Microsoft .Net framework от много години) е предназначен за изключително бързо търсене. В случая се генерират само няколко числа, след което в сървърите на Шазам излизат няколко вероятни кандидата. За пълно съвпадение вече се ползват по-сложни алгоритми и се ползват повече данни. Въпроса е да се намерят няколко от десетките милиони записа в сървърите в рамките на секунда примерно... А вече от 5 парчета е много по-лесно да се намери съвсем точното съвпадение за още 1 секунда.
VITAN:
Това е друга приказка.
От къде обаче си сигурен, че точно това, кое казваш използват?
CPU-то много бързо извършва операция сравняване, а и последните поколения са умопомрачително бързи.
Не че нещо, ей тъй, "за протокола" :)
Chokoch:
@epwpixieq-1
b a f bc eece d e e b e e af fac f ce ce f fb
juliang:
--- Цитат на: VITAN в Октомври 29, 2020, 08:02:48 pm ---Това е друга приказка.
От къде обаче си сигурен, че точно това, кое казваш използват?
CPU-то много бързо извършва операция сравняване, а и последните поколения са умопомрачително бързи.
Не че нещо, ей тъй, "за протокола" :)
--- Край на цитат ---
Ами във видеото го обясняват, а и съм се занимавал "малко" с такива неща та усещам как биха го направили. "Хешването" е на практика най-бързия начин за достъп до големи обеми информация, тънкостта е да намериш правилната хеш функция, която да ти върне "ключ" - такъв който да разпределя данните сравнително равномерно.
Ако имаш имена примерно - много е привлекателно да вземеш първвта буква от името, но ... "П" и "С" ще са много натоварени, за сметка на "Ъ" и "Щ" примерно.
Прроцесорите наистина са бързи, но ... когато се налага да работиш с милиарди записи, много бъро се оказва че мощността не стига.
Имах една такава задача в Телерик - да се изведат сортирани по брой срещания всички думи в "A Tale of Two Cities" на Дикенс - над 32 милиона знака, или няколко милиона думи. Взимаш всяка една дума, преглеждаш дали вече си я срещал, ако си я срещал - добавяш единица към бройката срещания, ако не си я срещал - записваш си я и записваш единица като бройка. За всяка от тези милиони думи минаваш през всички вече срещани и търсиш дали вече не си я срещал... А сравняваането на думи е ... дори и за бързи компютри е бавен процес - сравнява се буква по буква. Без хешсет (който го има в .Net framework-а) това става за минути, или дори часове. С хешсет реално на компютъра му трябва повече време да прочете файла от хард диска, отколкото да преброи и сортира по брой срещания думите - отнема буквално няколко секунди.
Така че въпроса е не само в бързодействието на процесора, а и в таланта на програмиста.
Навигация
[0] Списък на темите
Премини на пълна версия