MyTetra Share
Делитесь знаниями!
Алгоритм сравнения строк
Время создания: 16.03.2019 23:43
Текстовые метки: сравнение строк
Раздел: Разные закладки - VBA - Операции с датами-временем
Запись: xintrea/mytetra_db_adgaver_new/master/base/1517458266rsvov7x666/text.html на raw.githubusercontent.com

Алгоритм сравнения строк

Функция нечёткого сравнения использует в качестве аргументов две строки и параметр сравнения - максимальную длину сравниваемых подстрок. Результатом работы функции является число, лежащее в пределах от 0 до 1. 0 соответствует полному несовпадению двух строк, а 1 - полной (в определённом ниже смысле) их идентичности.

Сравнение строк происходит по следующей схеме. Пусть, например, в качестве аргументов заданы две строки "test" и "text" и некоторая максимальная длина подстрок, скажем, 4. Функция сравнения составляет все возможные комбинации подстрок с длинной вплоть до указанной и подсчитывает их совпадения в двух сравниваемых строках. Количество совпадений, разделённое на число вариантов, объявляется коэффициентом схожести строк и выдаётся в качестве результата работы функции.


Продолжим пример.


Сравниваемая подстрока


Подстроки второй строки


Есть совпадение?


Количество совпадений


Количество вариантов


Сравниваем строку test со строкой text по подстрокам длины 1.


t


t, e, x, t


да


3


4


e


t, e, x, t


да


s


t, e, x, t


нет


t


t, e, x, t


да


Сравниваем строку text со строкой test по подстрокам длины 1.


t


t, e, s, t


да


3


4


e


t, e, s, t


да


x


t, e, s, t


нет


t


t, e, s, t


да


Сравниваем строку test со строкой text по подстрокам длины 2.


te


te, ex, xt


да


1


3


es


te, ex, xt


нет


st


te, ex, xt


нет


Сравниваем строку text со строкой test по подстрокам длины 2.


te


te, es, st


да


1


3


ex


te, es, st


нет


xt


te, es, st


нет


Сравниваем строку test со строкой text по подстрокам длины 3.


tes


tex, ext


нет


0


2


est


tex, ext


нет


Сравниваем строку text со строкой test по подстрокам длины 3.


tex


tes, est


нет


0


2


ext


tes, est


нет


Сравниваем строку test со строкой text по подстрокам длины 4.


test


text


нет


0


1


Сравниваем строку text со строкой test по подстрокам длины 4.


text


test


нет


0


1


Итого


8


20

 
MyTetra Share v.0.65
Яндекс индекс цитирования