Что такое алгоритм, чтобы доказать, что схема транслитерации без потерь? - PullRequest
0 голосов
/ 29 сентября 2019

Скажем, вы хотите конвертировать один набор символов в другой.Вместо отображения 1-1 каждого символа в наборе A на соответствующий символ в наборе B это немного сложнее.Думайте как транслитератор естественного языка из сценария, например тайский или корейский , в латиницу.В корейском примере вы получите что-то вроде этого:

SKATS:  LUM CU LE  MEG KUGG BE.
Hangul: 김치가 맛있다.

Существует сопоставление «1 к 1» SKATS с корейским хангыль.LU - это одна буква, M - другая, CU - другая, и т. Д. Между этими буквами и произношением символов хангыль нет никакого соответствия, они просто выбраны из шляпы.

проблема начинает проявляться, когда у вас есть несколько символов, представляющих один символ.

Скажем, например, у вас есть звук "aspirated t", представленный как в IPA , иу вас также есть буквы t и h, и у вас есть английский th звук (θ в IPA).Скажем, вы решили представить звук как th.Ну, у вас могла бы быть эта фактическая последовательность:

tʰ-tʰ-th-t-t-h-t-tʰ-h-th

Если бы вы перевели это, то это было бы:

 th-th-th-t-t-h-t-th-h-th

Совокупность того, как это будет выглядеть на самом деле:

 thththtthtthhth

Теперь проблема в том, как вернуться к исходной последовательности символов.Мы можем интерпретировать это по-разному:

 th-th-th-t-th-t-th-h-th
 th-th-th-t-t-h-t-th-h-th
 th-th-th-t-t-h-t-t-h-h-th
 th-th-th-t-t-h-t-t-h-h-t-h
 th-th-th-t-t-h-t-t-h-h-tʰ
 th-th-th-t-t-h-t-tʰ-h-tʰ
 etc.

Как вы пишете алгоритм, который будет проверять, является ли ваше отображение без потерь 1: 1, чтобы предотвратить эту проблему?Я пытаюсь обернуть его вокруг себя в течение нескольких дней, но я ничего не получил.

Другой пример, если у вас есть "отдельные буквы", которые можно перекодировать в "ts", "s", "t"," h "," th "," tsh "," thsh "и т. д. Итак, у вас есть реальная проблема.

...