"Да" или "не"? Вика ли заявката функцията за разстояние за всеки две стойности?
Хайде бе хора, толкова ли е трудно да си признаеш, че си написал някоя идиотщина?
Така, обяснявам като за начинаещи. Да, конкретната заявка, която цитираш вика функцията за разстояние за всеки две стойности.
Но! Да обявяваш с лека ръка такъв код за "идиотщина" е доста самоуверено от твоя страна. Начинаещите програмисти често са самоуверени, но да не се окаже, че ти си писал идиотщината, а да изчисляваш ефективно разстоянието е по-бързото решение.
Защото първо, твоят алгоритъм има абсолютно същата асимптотична сложност, като тривиалното решение с два вложени цикъла - О(m.n), където m
и n
са броят на елементите в съответните множества.
Това, което ти печелиш със използването на trie структура, е ускоряване на изчисленията на разстоянието, но дали това ускоряване ще покрие всички забавяния, които правиш за да го използваш, е момент, който следва да се докаже.
(Ако си прочел до тука и си разбрал за какво говоря, има някаква надежда, че от теб някога ще стане програмист. Продължавай да четеш нататък)
Второ, това, че точно тази заявка вика функцията за всяка двойка, съвсем не означава, че няма друга заявка, която да не вика функцията за всяка двойка стрингове. (И като имам предвид универсалността на SQL за обработка на данни, то такава заявка е по-вероятно да съществува, отколкото да не съществува.)
Именно затова и написах, че това е примерен код, от който да се започне разработката, а не на който да приключи.