Rumah > pembangunan bahagian belakang > tutorial php > Struktur data PHP: Penggunaan pepohon Trie untuk mencari aksara padanan awalan dengan cekap

Struktur data PHP: Penggunaan pepohon Trie untuk mencari aksara padanan awalan dengan cekap

WBOY
Lepaskan: 2024-06-02 18:00:01
asal
504 orang telah melayarinya

Pokok Trie ialah struktur data pokok yang digunakan untuk mencari aksara padanan awalan dengan cekap. Ia terdiri daripada satu siri nod, setiap nod mewakili watak. Untuk memasukkan rentetan, mulakan pada nod akar dan buat atau cari nod di sepanjang laluan watak. Semasa mencari, cari ke bawah aksara demi aksara untuk menyemak sama ada terdapat perkataan yang sepadan. Dalam kes ini, pokok Trie digunakan untuk menyimpan nama haiwan dan mencari haiwan dengan cepat bermula dengan awalan tertentu.

Struktur data PHP: Penggunaan pepohon Trie untuk mencari aksara padanan awalan dengan cekap

struktur data PHP: Penggunaan pepohon Trie untuk mencari aksara padanan awalan dengan cekap

Pengenalan

Pepohon trie ialah struktur data pepohon yang digunakan khas untuk menyimpan rentetan dan sokongan carian pantas padanan Terkenal dengan kecekapan dan penjimatan ruang, ia digunakan secara meluas dalam bidang seperti pemprosesan bahasa semula jadi, semakan ejaan dan penghalaan rangkaian.

Struktur pokok trie

Pokok trie terdiri daripada satu siri nod, setiap nod mewakili aksara. Bermula dari nod akar, setiap peringkat pokok mewakili awalan rentetan. Setiap nod boleh mempunyai berbilang nod anak, mewakili akhiran berbeza bermula dengan awalan itu.

Sisipkan

Untuk memasukkan rentetan ke dalam pokok Trie, lakukan langkah berikut:

function insert(TrieNode $root, $string) {
    $node = $root;
    for ($i = 0; $i < strlen($string); $i++) {
        $char = $string[$i];
        if (!isset($node->children[$char])) {
            $node->children[$char] = new TrieNode();
        }
        $node = $node->children[$char];
    }
    $node->isWord = true;
}
Salin selepas log masuk

Cari

Untuk mencari sama ada rentetan tertentu wujud dalam pokok Trie, lakukan langkah berikut:

function search(TrieNode $root, $string) {
    $node = $root;
    for ($i = 0; $i < strlen($string); $i++) {
        $char = $string[$i];
        if (!isset($node->children[$char])) {
            return false;
        }
        $node = $node->children[$char];
    }
    return $node->isWord;
}
Salin selepas log masuk
Kes praktikal

Andaikan kita mempunyai senarai yang mengandungi nama haiwan seperti berikut:

$animals = ['dog', 'cat', 'rabbit', 'turtle', 'bird'];
Salin selepas log masuk

Kami mencipta pokok Trie untuk menyimpan nama haiwan ini:

$root = new TrieNode();
foreach ($animals as $animal) {
    insert($root, $animal);
}
Salin selepas log masuk

Kini, kami boleh menggunakan pokok Trie untuk mencari haiwan dengan awalan yang sepadan dengan mudah, untuk contoh, cari " Haiwan bermula dengan d":

$prefix = 'd';
$result = [];
foreach ($animals as $animal) {
    if (search($root, $prefix . $animal)) {
        $result[] = $animal;
    }
}
print_r($result);
Salin selepas log masuk

Hasil keluarannya ialah:

Array
(
    [0] => dog
)
Salin selepas log masuk

Atas ialah kandungan terperinci Struktur data PHP: Penggunaan pepohon Trie untuk mencari aksara padanan awalan dengan cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan