Struktura danych Trie często jest świetnym sposobem na przechowywanie napisów w języku angielskim. Działa poprzez budowanie drzewa, w którym każda krawędź jest oznaczona literą, a ścieżka do zaznaczonego węzła w drzewie oznacza jedno ze słów w strukturze danych.Ograniczenia i alternatywy dla prób w językach innych niż angielski?
Ta struktura danych działa dobrze w języku angielskim, ponieważ w alfabecie angielskim jest "tylko" 26 liter ("rozsądny" współczynnik rozgałęzienia), znaki te mają kolejne wartości ASCII (więc wskaźniki potomne mogą być przechowywane w postaci tablicy z kluczami według indeksu liter używanych przez każde dziecko) i istnieje wiele angielskich słów ze wspólnymi przedrostkami (więc w strukturze jest dużo redundancji).
Jestem native speakerem z angielską jedynie ograniczoną znajomością innych języków i alfabetów, ale wydaje się, że wiele z tych właściwości nie ma innych języków. Wiem, że na przykład francuski, hiszpański, niemiecki i węgierski często używają znaków diakrytycznych, które nie są przechowywane w sposób ciągły z pozostałymi literami w przestrzeni Unicode. Hebrajski i arabski mają oznaczenia samogłosek, które są zwykle wskazane powyżej lub poniżej każdej litery. Chińczycy używają systemu logogramów, a koreańskie znaki Hangul składają się z trzech małych grup zgrupowanych razem.
Czy próby nadal działają dobrze w przypadku danych przechowywanych w tych językach i alfabetach? Jakie zmiany, jeśli są potrzebne, są niezbędne w przypadku prób użycia tego rodzaju danych? Czy istnieją struktury danych, które działają dobrze na ciągi znaków w tych językach i alfabetach, które są dla nich szczególnie odpowiednie, ale czy nie byłyby przydatne lub wydajne w języku angielskim?
Po linii czyszczenia danych wejściowych, w przypadku systemów zapisu logograficznego wydaje się, że pomocne może być wykorzystanie romanizacji. – Nuclearman
@Nuclearman: Przypuszczam, że romanizacje mogłyby pomóc, jeśli masz dobry słownik. Nigdy nie zastanawiałem się nad tym. Ciekawy pomysł. –
Innym podejściem jest zanotowanie, że każdy znak może zostać wygenerowany za pomocą określonych kombinacji klawiszy na klawiaturze zaprojektowanej dla tego języka. Powinno być możliwe wykonanie odwrotnego wyszukiwania w celu znalezienia konkretnej kombinacji.Chociaż wymaga to również pewnego rodzaju słownika. – Nuclearman