GADDAG - GADDAG

Bir GADDAG bir veri yapısı 1994'te Steven Gordon tarafından, hareketler oluşturmada kullanılmak üzere Scrabble ve bu tür hareketlerin mevcut kelimelere "bağlanan" kelimeleri gerektirdiği diğer kelime oluşturma oyunları. Genellikle, hareket oluşturma algoritmalarının aksine bir yönlendirilmiş döngüsel olmayan kelime grafiği (DAWG) tarafından kullanılan gibi Uzman. Genellikle geleneksel DAWG algoritmalarından iki kat daha hızlıdır, ancak düzenleme Scrabble sözlükleri için yaklaşık 5 kat daha fazla yer kaplar.[1]

Açık kaynaklı bir Scrabble programı olan Quackle, hamle oluşturmak için bir GADDAG kullanıyor.[2]

Açıklama

GADDAG adı, DAG'den gelmektedir. Yönlendirilmiş döngüsüz grafiği, kendi tersi ile ön eklenmiştir.[1]

GADDAG, bir Trie, diğer GADDAG'lere yönelik eyalet ve şubeleri içerir. Bir sözlükteki her kelimenin her ters çevrilmiş önekini saklamasıyla farklıdır. Bu, her kelimenin harflerde olduğu kadar çok temsilinin olduğu anlamına gelir; Çoğu Scrabble düzenleme sözlüğündeki ortalama kelime 5 harf uzunluğunda olduğundan, bu GADDAG'ı basit bir DAWG'den yaklaşık 5 kat daha büyük yapar.

Tanım

Boş olmayan bir önekle oluşturulan sözlükteki herhangi bir kelime için x ve bir son ek y, bir GADDAG herhangi bir dize için doğrudan, deterministik bir yol içerir REV(x)+y, burada + bir bitiştirme operatörüdür.

Örneğin, "açıklamak, "bir GADDAG, dizelere giden doğrudan yolları içerir

e + xplainxe + plainpxe + lainlpxe + ainalpxe + inialpxe + nnialpxe

Bu kurulum, içinde geçen herhangi bir harf verilen bir kelimeyi aramayı sağlar.

Hareket oluşturmada kullanın

Herhangi bir hareket oluşturma algoritması üç tür kısıtlamaya uymalıdır:

  • Yönetim kurulu kısıtlamaları: sadece tahtadaki mevcut harflere 'kancalanarak' inşa edilebilir ve sadece boş karelere fayans yerleştirilebilir.
  • Raf kısıtlamaları: yalnızca harfli fayanslar kişinin rafına yerleştirilebilir.
  • Sözlük kısıtlaması: karoların yerleştirilmesinden kaynaklanan tüm kelimeler oyunun sözlüğünde bulunur.

DAWG tabanlı algoritmalar ikinci ve üçüncü kısıtlamadan yararlanır: DAWG, sözlüğün etrafında oluşturulur ve raftaki döşemeler kullanılarak geçilir. Bununla birlikte, ilk kısıtlamayı ele almakta başarısız olur: birinin harfe 'bağlanmak' istediğini varsayarsak P içinde HARPYve tahtada P'den önce 2 boşluk vardır, üçüncü harfin olduğu raftaki harfleri içeren tüm kelimeleri sözlükte aramak gerekir. P. Bu, DAWG'de arama yaparken verimsizdir, çünkü trie üzerinden yapılan birçok arama sonuçsuz kalacaktır.

Bu, GADDAG'ın ön ekleri depolamasıyla giderilir: P bir GADDAG şubesi, bir P Kompozisyonlarının herhangi bir yerinde olabilir ve raftaki karolarla kelimeyi oluşturmak için ön eki "yukarı taşıyabilir". Örneği kullanmak için § Tanım bölüm, aranıyor P ortaya çıkıyor "pxe + lain". Arasındaki harfler P + işaretinin üstüne yerleştirilebilir P tahtada ve geri kalanı onun altında (panoda yer izin veriyorsa).

Ayrıca bakınız

Referanslar

  1. ^ a b Gordon Steven A. (1994). "Daha hızlı Scrabble hareket oluşturma algoritması" (PDF). Yazılım: Uygulama ve Deneyim. 24 (2): 219–232. doi:10.1002 / spe.4380240205.
  2. ^ Jason Katz-Brown; John O'Laughlin. "Quackle Scrabble'ı Nasıl Oynar". Alındı 2018-07-02.