<bgdev />free

| |  


All tags 2023 9may ai algorithm alpha amd american api argon2 arm asm asmbb assembler attachment awareness balgaria bay888 bcrypt bender beta bgdev-next bgdev-next.👍 big.data bitchnigga bitcoin bmw boi borg brexit bug bulgaria business c cad chat cloud computer-names console crossorigin deprivation desktop dna dotnet email eupl falling feature forum foundation fp fresh fun game github goats google gpl gpt gpt.3.5 gypsies happiness harvard hash improvement include investment it java javascript js kleta kleta.maqka.balg lambi language learning leftovers legend level levenshtein.dist libx license linkedlist linux ma mcafee mele microsoft minimag minimalism negro net nginx nigga not.a.bug oop paradigm parler patterns perception persuasion pipe play.station politics populi pornhub pow pro programming protonmail python reba rust sci-fi scripting seks seo server shell sleep smartbeauty soft-skills sqlite srabska sse starship sugerface syntax tablet tailwindcss telegram theme thug troll80lvl tutanota typescript uacme ui uk unix untermensch upload uptime usa utilities ux vb via viber virtual.reality vox vps vulnerable war wasm weapons-grade web windows word x86 xbox xss youtube zig ziglang Übermensch БОКЕБЪЛГАРИН БЪ БЪлгария Белезниците Били Били.Белезниците БялДонор Веган Виста Възраждане ГЛУПАК Гана Глиста ЕС Казарма Копейкин Мода.и.овча.мисъ НЕКАДЪРНИК НРБ ПО-ЗЛЕ.И.ОТ.РАБИ Подкасти Разни Румен СИК СКУМ СетенЧук Скум ТИР Туче Украйна Урсула Яначков авангард аз айфонджия алгоритми амбиции анархизъм антиваксъри армения аудио аутисти бази.данни бакъп без без.пръчове безпросвета бенчмарк биготи биомаса бира боклук борисов ботев брадва булшит бъг бъгове бял ваксина вандал век венерика викинги вицове вишу война вървежен гана ганорник гей гейщина германия герои гешев глупак говеда групировка гюбек данъкоплатец двойни.стандарти дедотия демокрация дизайн дисциплина добитък докери долар донори држава дришльо дрон ебане еврогейски.съюз езици експеримент електроника електроника.s2 емиграция ендпойнт енум ерген ергономия жалкар задача затоплизъм защита здраве златен злато игри идеали идиократ идиократи идиокрация идиот избори избори.рабин изкуство икономика имбецили имейл инвестиране инокулация инструмента интервю ипад искам.да.си.реда казах камшикодържач капитализъм карабах караница картечница кино клавиатура ковид19 колайдер колям.кур комари комплексар комунизъм консолидация конспирации космонавтика кофа кофит-19 краставица криптовалути курви кучелюбци лайно лаладжия лаптоп либерастия литература лоши.практики луд лъжеучени лъжец любов майни майтапи малоумници мафия мениджмънт месо местене метавселена метафизика механика мистика мисъл мода мода.овча.мисъл модерация морал мутра мутри наука национализъм не.it негър некадърник некадърници неон нидерландия овча овчи олигофрени организация офтопик парички партия педал пенджури пенсия пишока плюскане победа погромист поезия политика порно посредствен почивка празници прасе превод предалщина програмиране проект проста простотии против.правилата проф пръч пръч.дришльо пръчка психика психични.болести психология пустиняк путин путката путьо рабин рабин.е.шибан.пе работа радост разврат разни разработка расизъм резерват рейтинг реклама рекламен религия рест ризи ропче ропчета русия руски.език рутина самоковска сасипаха секира село селяндур сериали сериозно.програм сетен сеянин симулация скопяване скръм слушалки сортиране софия софтуер софтуни социализъм спектрометър спринтове сране стандарти стил стуйо стюи сушилня сцена съвет съм сън сървър сърничка таб ташаци телевизия тема територията терминология термояд технологии титли традиция тролинг тръмп туба туче тъпак тъпанари тъпня уиндоус украйна умнокрасивци фалит фантастика фашизъм фейк.акаунти физика филми форум форумни.проекти футбол хазарт хамали харабия хардуер хахаха хомофобия хостинг храна хумор цайко цайси целофан цензура цензурра циганин чалга чалгар чекии чернокраки честота чипове чнг чужбина чук шпация щайга юан яката яко ям 🔨 😂 🪓


Задача НЕ за интервю

  

0 1 2 3 4 ...17 18 19 20 21 ...32 33 34 35 36


  ФейкПрофил  Създадено на 20.09.2020, видяно: 1787 пъти. #11236
|
ФейкПрофил

Тоест твоя код не прави всяко с всяко ?

Не

Добре, освен правилото за "неравенството на триъгълника" не се сещам за някакво друго свойство на edit distance което да може да се ползва, не че и това ни мога по някакъв начин. Сигурен ли си, че с информацията която си дал може да се стигне до решение ? Тези стрингове имат ли някакви зависимости помежду си ?

ПП: metric tree ?



  |  Последно редактирано на 20.09.2020 от |, видяно: 1783 пъти. #11240
ФейкПрофил
|
ФейкПрофил

Тоест твоя код не прави всяко с всяко ?

Не

Добре, освен правилото за "неравенството на триъгълника" не се сещам за някакво друго свойство на edit distance което да може да се ползва, не че и това ни мога по някакъв начин. Сигурен ли си, че с информацията която си дал може да се стигне до решение ? Тези стрингове имат ли някакви зависимости помежду си ?

ПП: metric tree ?

Някой вече спомена: DNA.

Правя trie с елементите на една от колекциите, търся елементите от другата като давам максимално разстояние. Не е кой знае какво, но определено не сравнява всяка двойка стрингове.



  ФейкПрофил  Последно редактирано на 20.09.2020 от ФейкПрофил, видяно: 1778 пъти. #11246

А разстоянието как го мериш в дървото ? Нали могат да се махат/добавят/сменят елементи, някак си много сложно иглежда.

http://stevehanov.ca/blog/index.php?id=130



  |  Последно редактирано на 20.09.2020 от |, видяно: 1771 пъти. #11248
ФейкПрофил

А разстоянието как го мериш в дървото ? Нали могат да се махат/добавят/сменят елементи, някак си много сложно иглежда

Има някакъв trie search с levenshtein distance. В моят случай дървото се прави веднъж в началото и после само се търси.

K-D дърветата ги знам, разбира се, ще погледна VP trees.



  bvbfan  Създадено на 20.09.2020, видяно: 1762 пъти. #11253
|
bvbfan
|

Наистина ли мислиш, че потребителска функция в sqlite ще е по-добра от в момента работещия мноконишков, сравнително оптимизиран код? :) Защото той отнема около седмица на машина с 48*2 ядра, при това когато стринговете от колекция А е 100К. :) А компютрите имат много памет, може да предположиш че е безкрайно много (1.5 TB).

Ако питаш мен, аз не мисля, сигурен съм.

Е, като се има предвид, че беше сигурен че ARM използва gcc, OK. :)

Реално си бях прав, точно преди 5г. когато престанах да се занимавам с ембедед, тогава clang на връбница. Това съм го пробвал доста по-скоро.



  |  Последно редактирано на 20.09.2020 от |, видяно: 1761 пъти. #11255
bvbfan
|
bvbfan
|

Наистина ли мислиш, че потребителска функция в sqlite ще е по-добра от в момента работещия мноконишков, сравнително оптимизиран код? :) Защото той отнема около седмица на машина с 48*2 ядра, при това когато стринговете от колекция А е 100К. :) А компютрите имат много памет, може да предположиш че е безкрайно много (1.5 TB).

Ако питаш мен, аз не мисля, сигурен съм.

Е, като се има предвид, че беше сигурен че ARM използва gcc, OK. :)

Реално си бях прав, точно преди 5г. когато престанах да се занимавам с ембедед, тогава clang на връбница. Това съм го пробвал доста по-скоро.

Какво си пробвал по-скоро. Да търсиш минимална levenshtein distance между две колекции от стрингове? С sqlite vs. DRAM? :)

А иначе, ако си спомняш тезата ми тогва беше, че llvm изритва gcc отвсякъде. Опита отпреди 5 години няма как да има общо с реалността сега.



  |  Създадено на 20.09.2020, видяно: 1756 пъти. #11256

Сега ми хрумна още една оптимизация, ще я пробвам по-късно. Така или иначе трябва да преписвам кода на Go, че е някаква диващина с рекурсия.



  ФейкПрофил  Създадено на 20.09.2020, видяно: 1754 пъти. #11258

Направо на ръст :evil:



  bvbfan  Създадено на 20.09.2020, видяно: 1754 пъти. #11259
|
bvbfan
|
bvbfan
|

Наистина ли мислиш, че потребителска функция в sqlite ще е по-добра от в момента работещия мноконишков, сравнително оптимизиран код? :) Защото той отнема около седмица на машина с 48*2 ядра, при това когато стринговете от колекция А е 100К. :) А компютрите имат много памет, може да предположиш че е безкрайно много (1.5 TB).

Ако питаш мен, аз не мисля, сигурен съм.

Е, като се има предвид, че беше сигурен че ARM използва gcc, OK. :)

Реално си бях прав, точно преди 5г. когато престанах да се занимавам с ембедед, тогава clang на връбница. Това съм го пробвал доста по-скоро.

Какво си пробвал по-скоро. Да търсиш минимална levenshtein distance между две колекции от стрингове? С sqlite vs. DRAM? :)

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.



  |  Създадено на 20.09.2020, видяно: 1749 пъти. #11261
bvbfan

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.

Т.е. не може да се сравнява с моя код. :)



  bvbfan  Последно редактирано на 20.09.2020 от bvbfan, видяно: 1744 пъти. #11262
|
bvbfan

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.

Т.е. не може да се сравнява с моя код. :)

Какъвто и да е "твоят" код, сравнявам двоични дървета, "твоят" мога да прогнозирам е някакво подобие.



  |  Последно редактирано на 20.09.2020 от |, видяно: 1741 пъти. #11264
bvbfan
|
bvbfan

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.

Т.е. не може да се сравнява с моя код. :)

Какъвто и да е "твоят" код, сравнявам двоични дървета, "твоят" мога да прогнозирам, че не става, ако не е някакво подобие.

Написал съм какъв е моят код. Trie.

Какво има в двоичните дървета?



  bvbfan  Последно редактирано на 20.09.2020 от bvbfan, видяно: 1737 пъти. #11266
|
bvbfan
|
bvbfan

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.

Т.е. не може да се сравнява с моя код. :)

Какъвто и да е "твоят" код, сравнявам двоични дървета, "твоят" мога да прогнозирам, че не става, ако не е някакво подобие.

Написал съм какъв е моят код. Trie.

Нормално, без да съм го видял. Ако си писал и на Джава - :-) Очаквай в пъти да е по-бърз sqlite. Напиши си функцията на С, и си слагай в заявки.



  |  Последно редактирано на 20.09.2020 от |, видяно: 1735 пъти. #11268
bvbfan
|
bvbfan
|
bvbfan

Не, big data на нишки в рама срещу sqlite, разбира се и той може всичко в рама, зависи от кеша. В интерес на истината sqlite бие всякакви nosql лайна и се доближава до напълно данните в рама, ако кеша е достатъчно голям, но печелиш, много по-малко код, кеф ти всякакви заявки.

Т.е. не може да се сравнява с моя код. :)

Какъвто и да е "твоят" код, сравнявам двоични дървета, "твоят" мога да прогнозирам, че не става, ако не е някакво подобие.

Написал съм какъв е моят код. Trie.

Нормално, без да съм го видял. Ако си писал и на Джава - :-) Очаквай в пъти да е по-бърз sqlite. Напиши си функцията на С, и си слагай в заявки.

Функцията я имам и на C и на Go. На C e малко дървена, понеже ще я пробвам на GPU като се наканя.

Досега не си написал абсолютно нищо, което може да ме убеди, че sqlite може да е по-бърз.



  bvbfan  Последно редактирано на 20.09.2020 от bvbfan, видяно: 1731 пъти. #11271

Не знам какво очакваш да ти напиша, levenstein е една елементарна функция, ползвах я преди години. Освен нея ти трябват заявки към базата и получаваш данните, във всякакъв ред, в зависимост от завката. Чисто и ясен код.



  |  Създадено на 20.09.2020, видяно: 1725 пъти. #11274
bvbfan

Не знам какво очакваш да ти напиша, levenstein е една елементарна функция, ползвах я преди години. Освен нея ти трябват заявки към базата и получаваш данните, във всякакъв ред, в зависимост от завката. Чисто и ясен код.

Всеки два стринга ли ще сравни? Левенщайн може да е чиста, но това не означава, че е бърза.



  johnfound  Създадено на 20.09.2020, видяно: 1715 пъти. #11277
|
bvbfan

Не знам какво очакваш да ти напиша, levenstein е една елементарна функция, ползвах я преди години. Освен нея ти трябват заявки към базата и получаваш данните, във всякакъв ред, в зависимост от завката. Чисто и ясен код.

Всеки два стринга ли ще сравни? Левенщайн може да е чиста, но това не означава, че е бърза.

Ами виж сега, това, което ти правиш с това trie, реално е просто прекратяване на изчислението на дистанцията, ако е по-дълга от зададената максимална стойност (64). Но алгоритъма пак си остава О(n.m), просто защото трябва да сравниш всеки със всеки, за да знаеш кой е с минимална дистанция. И от тази сложност принципно не може да се избяга.

Но това лесно се имплементира и във функцията за пресмятане на разстоянието - просто когато стигне до 65 трябва да връща безкрайност и да не сравнява стринговете нататък.

Евентуално, ако сортираш стринговете в сет А, може да се окаже, че тези, които са със разстояние < 65 образуват някаква група и можеш да смяташ само в тази група. Но това също лесно се организира в SQLite чрез индекси и съответно параметрите във where клаузата.

Освен това, тъй като разстоянието L(s1,s2) >= ||len(s1)| - |len(s2)||, то можеш да си спестиш доста, като просто вкараш и дължините на стринговете в базата и сравняваш само тези, които също са с подходяща дължина. За това също ще ти помогнат индекси и правилните заявки. Колко печалба ще имаш, зависи от разпределението на стринговете по дължини.



  synergie  Създадено на 20.09.2020, видяно: 1704 пъти. #11284
johnfound
|
bvbfan

Не знам какво очакваш да ти напиша, levenstein е една елементарна функция, ползвах я преди години. Освен нея ти трябват заявки към базата и получаваш данните, във всякакъв ред, в зависимост от завката. Чисто и ясен код.

Всеки два стринга ли ще сравни? Левенщайн може да е чиста, но това не означава, че е бърза.

Ами виж сега, това, което ти правиш с това trie, реално е просто прекратяване на изчислението на дистанцията, ако е по-дълга от зададената максимална стойност (64). Но алгоритъма пак си остава О(n.m), просто защото трябва да сравниш всеки със всеки, за да знаеш кой е с минимална дистанция. И от тази сложност принципно не може да се избяга.

Но това лесно се имплементира и във функцията за пресмятане на разстоянието - просто когато стигне до 65 трябва да връща безкрайност и да не сравнява стринговете нататък.

Евентуално, ако сортираш стринговете в сет А, може да се окаже, че тези, които са със разстояние < 65 образуват някаква група и можеш да смяташ само в тази група. Но това също лесно се организира в SQLite чрез индекси и съответно параметрите във where клаузата.

Освен това, тъй като разстоянието L(s1,s2) >= ||len(s1)| - |len(s2)||, то можеш да си спестиш доста, като просто вкараш и дължините на стринговете в базата и сравняваш само тези, които също са с подходяща дължина. За това също ще ти помогнат индекси и правилните заявки. Колко печалба ще имаш, зависи от разпределението на стринговете по дължини.

Видях я тая глупост с trie-то още като я пусна, но между сауните и жакузитата тука не ми остана време да пиша. Потвърждава тезата ми че пайпа не знае какво е Биг О.



  |  Последно редактирано на 20.09.2020 от |, видяно: 1700 пъти. #11287
johnfound
|
bvbfan

Не знам какво очакваш да ти напиша, levenstein е една елементарна функция, ползвах я преди години. Освен нея ти трябват заявки към базата и получаваш данните, във всякакъв ред, в зависимост от завката. Чисто и ясен код.

Всеки два стринга ли ще сравни? Левенщайн може да е чиста, но това не означава, че е бърза.

Ами виж сега, това, което ти правиш с това trie, реално е просто прекратяване на изчислението на дистанцията, ако е по-дълга от зададената максимална стойност (64). Но алгоритъма пак си остава О(n.m), просто защото трябва да сравниш всеки със всеки, за да знаеш кой е с минимална дистанция. И от тази сложност принципно не може да се избяга.

Но това лесно се имплементира и във функцията за пресмятане на разстоянието - просто когато стигне до 65 трябва да връща безкрайност и да не сравнява стринговете нататък.

Евентуално, ако сортираш стринговете в сет А, може да се окаже, че тези, които са със разстояние < 65 образуват някаква група и можеш да смяташ само в тази група. Но това също лесно се организира в SQLite чрез индекси и съответно параметрите във where клаузата.

Освен това, тъй като разстоянието L(s1,s2) >= ||len(s1)| - |len(s2)||, то можеш да си спестиш доста, като просто вкараш и дължините на стринговете в базата и сравняваш само тези, които също са с подходяща дължина. За това също ще ти помогнат индекси и правилните заявки. Колко печалба ще имаш, зависи от разпределението на стринговете по дължини.

Как каквото и да правя с функцията ще промени факта, че sqlite ще я извика за всяка двойка от стрингове?

Това, което прави trie е да сравнява всеки различен символ във ВСИЧКИ стрингове от колекцията само веднъж.

Рязането на стрингове под 90 и над 210 е нормално и вече го правя.

Сортирането не помага. Ако помислиш малко ще се сетиш защо. А trie така или иначе ги сортира автоматично.

А, когато изпълнението на кода отнема седмица, слабо ме вълнова дали О-то е същото като това което свършва за месец. :)



  johnfound  Създадено на 20.09.2020, видяно: 1691 пъти. #11292
|

Как каквото и да правя с функцията ще промени факта, че sqlite ще я извика за всяка двойка от стрингове?

Това, което прави trie е да сравнява всеки различен символ във ВСИЧКИ стрингове от колекцията само веднъж.

Рязането на стрингове под 90 и над 210 е нормално и вече го правя.

Сортирането не помага. Ако помислиш малко ще се сетиш защо. А trie така или иначе ги сортира автоматично.

А, когато изпълнението на кода отнема седмица, слабо ме вълнова дали О-то е същото.

Ами не, не съм убеден. Реално, за всеки стринг от B ти трябва да обходиш цялото дърво. Което като сложност е еквивалентно на обхождането на целият масив А.

Икономисваш само на изчислението на разстоянието, тъй като връщайки се назад по дървото, можеш да имаш частично изчисленото разстояние и да продължиш от текущият символ, а не да започваш отначало.

Само че, за сметка на това имаш:

1. Рекурсия, която далеч не е евтина и като време и като памет.

2. Работа с далеч по-големи структури от данни, вместо с еднобайтови символи. Които структури често ще излизат от кеша на процесора.

3. Много повече код, който трябва да се изпълнява, заради 1 и 2.

И дали ползата превишава вредата е нещо, което трябва да се докаже. Освен това, ти пак не казваш на какво си го написал? Да не се окаже, че ако се напише на нормален език без всичките тези дървета пак ще е по-бързо.

Защото аз съм се убедил, че ако не се променя О() сложността, то трябва да се избира най-простото решение, а не това, което икономисва някакви итерации за сметка на прекомерно усложняване на кода и данните.


0 1 2 3 4 ...17 18 19 20 21 ...32 33 34 35 36


Задача НЕ за интервю

  



AsmBB v3.0 (check-in: 7544654b24928b93); SQLite v3.47.0 (check-in: 03a9703e27c44437);
©2016..2024 John Found; Licensed under EUPL; Powered by Assembly language Created with Fresh IDE