Kaikki * täydelliset englanninkieliset pankramat

An Englanninkielinen pangram on lause, joka sisältää kaikki englannin aakkoset 26 kirjainta. Tunnetuin englantilainen pangram on todennäköisesti ”Nopea ruskea kettu hyppää laiskan koiran yli”. Suosikkini pangram on ”Hämmästyttävän harvat diskot tarjoavat jukebokseja.”

Täydellinen pangram on pangram, jossa jokainen kirjaimista näkyy vain kerran. Olen löytänyt verkosta lähteitä, joissa luetellaan tunnetut täydelliset pangramit. Kukaan ei tunnu yrittäneen menestyksekkäästi tuottaa niitä kaikkia tyhjentävästi, joten otin sen hauskaksi haasteeksi. Näin löysin kaikki * täydelliset englanninkieliset pangramit. Selitän tähden myöhemmin.

A crwth. Lähde.

  • Crwth vox sulkee qi kuntosalin fjeld-kerrossängyt. (Kelttilaisen viulun ääni iskee itäiseen henkivoimiin keskittyvään kuntokeskukseen, joka sijaitsee karuilla tasangoilla Skandinaviassa.) Tämä on kaikki Scrabble-laillisia sanoja!
  • Squdgy kilp job zarf nth cwm vex. (Huonosti muotoiltu rakkolevä ostaa koristeellisen kuppilämmittimen, jonka yksi monista laakson tai vuorenrinteen puolivälissä olevista jyrkänpuoleisista onteloista on ärsyttänyt.)
  • Jock-nymfit waqf drug vex blitz. (Hyväntekeväisyysrahasto päihitti metsähenget, mikä turhautti hyökkäävää urheilijaa.)
  • Hm, vuonovalsi, cinq busk, pyx veg. (Katsotaanpa, pitkä kapea syvä sisääntulotanssi tanssii, viisi noppaa soittaa musiikkia kadulla ja pieni pyöreä astia sairaille ja työkyvyttömille lepää.) Myös Scrabble laillista, mutta siinä on väliintulo (Hm).

Valitettavasti nämä ovat luettavimpia lauseita, jotka löysin *. Kaikki Scrabble-virallisesta turnauksesta ja klubisanaluettelosta 3 (OWL3) saadut täydelliset pangramit ilman väliintuloja sisältävät joko sanan cwm tai crwth. Waqf on Scrabble-turnaus laillista Pohjois-Amerikan ulkopuolella.

Kuinka löytää kaikki täydelliset pangramit

Menetelmä täydellisten pangramien löytämiseksi on kaksi vaihetta. Ensimmäinen on löytää kaikki sanaryhmät, jotka sisältävät jokaisen englanninkielisen aakkosen kirjaimen kerran. Toisessa vaiheessa on selvitettävä, mitkä näistä sarjoista voidaan järjestää uudelleen kelvollisiksi englanninkielisiksi lauseiksi.

Vaihe 1: Sanasarjojen löytäminen täydellistä pangramia varten

Aloita etsimällä sanaryhmiä, jotka englanninkielinen aakkoset edellyttää luetteloa englanninkielisistä sanoista. Korkealaatuisen sanaluettelon löytäminen ja ylläpitäminen oli paljon vaikeampaa kuin olin odottanut. Alun perin ajattelin, että tämä projekti kestää kaksi päivää, mutta se vie kaksi viikkoa tämän tiedon laatuongelman seurauksena.

Aloitin Unix-sanakirjasta, joka on vapaasti saatavilla oleva luettelo englanninkielisistä sanoista joka tulee melkein kaikkien Unix-pohjaisten käyttöjärjestelmien mukana. Huomasin heti, että luettelossa oli laatuongelmia. Ensinnäkin kutakin aakkosten kirjainta pidettiin sanana Unix-sanakirjassa, ja se sisälsi paljon ei-sanoja, kuten ”vejoz”. Tämä osoitti mustan listan tarpeen hallita verkossa löydettyjä sanaluetteloita. Unix-sanakirjasta puuttui sanojen monikkomuoto, joten sanakirjaan sisältyisi sana ”oranssi”, mutta ei ”appelsiinit”. Sanaluettelo on itse asiassa niin rajoittava, että yksikään aikaisemmin tunnettu täydelliset pangramit eivät sisällä vain sanoja Unix-sanakirjasta. jotkut, kuten ”squdgy kilp job zarf nth cwm vex”.

Käännyin sitten Internetiin etsimään suurempia sanoja. Löysin erittäin suuria sanajoukkoja, jotka olivat valtavia, mutta kun aloin kaivaa täydellisiä pankrameja näistä luetteloista, huomasin, että ne olivat aivan liian saastuneita huonolaatuisilla sanoilla, jotka eivät ole kelvollisia englanninkielisiä sanoja. Jopa monien iterointikierrosten jälkeen en silti onnistunut muuttamaan luetteloa alaspäin löytääkseni kohtuullisia tai hallittavia rytmiä. Yritin puhdistaa sen luomalla sallittujen luettelon tietyn pituisista sanoista, mutta luettelo oli silti erittäin heikkolaatuinen.

Lopuksi maksoin monien toistojen jälkeen 15 dollaria ostamaan Pohjois-Amerikan kokeilujäsenyyden. Scrabble® Players Association, joka antoi minulle pääsyn omistettuun ja tekijänoikeuksin suojattuun OWL3: een, mikä on kiistan lähde. Silloinkin minun piti lisätä joitain tunnettuja sanoja englanniksi, kuten yksikirjaiset sanat ”a” ja ”I”.

Aseistettu oikealla sanaluettelolla toteutin algoritmin tuottamaan kaikki kyseisen luettelon sanaryhmät, joista jokainen sisältää yhden englannin aakkosista. Kuvaan algoritmin perusteellisesti alla olevassa ”Algoritmi” -osiossa.

Vaihe 2: Englanninkielisten lauseiden muodostaminen sanapussista

Annetaan joukko sanoja selvittämään, onko voimassa oleva englanninkielinen lause on mahdollinen kaikilla annetuilla sanoilla, ei ole vähäpätöinen ongelma, mutta se on helpompaa kuin useimmat muut luonnollisen kielen käsittelyn ongelmat.

Ei-kelvollisten lauseiden kitkemiseen on hyödyllistä heuristiikkaa; Pystyin muodostamaan kelvolliset englanninkieliset lauseet jäljellä olevista sanoista näiden heuristiikan seuraamisen jälkeen. Lauseet olivat usein järjettömiä, mutta silti päteviä. Tässä ovat heuristiikat, joita käytin:

  1. Ainakin yksi verbi on oltava.
  2. Substantiiveja voi olla vain yksi enemmän kuin verbejä, ellei ole konjunktiota tai prepositio, jotka molemmat ovat hyvin harvinaisia.
  3. Jos on olemassa adjektiiveja, on oltava myös substantiiveja.

Heuristinen toimii osittain implisiittisen mahdollisuuden vuoksi. aiheet (ei täydellinen eikä pangram, mutta ”liiku hiljaa ja puhu hiljaa” on lause, jossa on kaksi verbiä ja ei substantiiveja, implisiittisen aiheen ”sinä”).

Koska sanojen tila, joka voi Mahdollinen osallistuminen täydellisiin pankrameihin on pieni, on tarpeeksi helppoa merkitä kukin yksittäinen sana manuaalisesti sopiviin puheosiin ja nähdä, noudattaako sanaryhmä näitä kolmea yksinkertaista heuristiikkaa. Pidätkö tuotettujen lauseiden laadusta vai ei, on makukysymys.

Algoritmi

Tämä osa on vähän tekninen, mutta toivottavasti silti helppo seurata. Voit vapaasti siirtyä Tulokset & Oppimiset-osioon.

Korkean tason strategia

Tavoitteena on tuottaa kaikki mahdolliset sanat annetusta sanaluettelosta, joka ulottuu englannin aakkosiin ”täydellisesti”.

  1. Puhdista sanaluettelo vähentääksesi hakutilaa huomattavasti, esim. poista sanat, joissa on toistuvia kirjaimia, kuten ”kirjaimet”.
  2. Käytä bittimaskkeja edustamaan sanoja tehokkaasti ja yhdistämään ne takaisin alkuperäisiin sanaryhmiin. kukin edustaa mahdollista kirjainyhdistelmää toistamalla toistuvasti bittimaskien luettelon. Suorituskykyä parannetaan dramaattisesti dynaamisen ohjelmoinnin avulla.
  3. Piirrä nuolet (suunnatut reunat) täydellisestä pangram-tilasta, lopullisesta tilasta, jolla on kaikki englanninkieliset kirjaimet välittäjävaltioille, jotka sen muodostivat. Tee se uudestaan välittäjävaltioiden kanssa sellaisen tietorakenteen luomiseksi, joka pystyy rekonstruoimaan sanaryhmät, jotka ovat mahdollisia täydellisiä puheluita. Tätä kutsutaan takaisinkytkemiseksi.
  4. Output löydetyt sanaryhmät, jotka ovat mahdollisesti täydellisiä pankrameja puina.

Luettelon puhdistaminen, alias kanonisointi

Ensimmäinen vaihe on alkuperäisen sanaluettelon puhdistaminen hakutilan vähentämiseksi ja tulostuslaadun parantamiseksi.

  1. Kaista kaikki välilyönnit sanan ympärille ja muunna se vain pieniksi kirjaimiksi
  2. Varmista, että sanat sisältävät vain englanninkielisiä aakkosia; Käytin yksinkertaista säännöllisen lausekkeen suodatinta: /^+$/
  3. Suodata muihin luetteloihin, esim. mustat listat; jos sana on mustalla listalla, ohita sana
  4. Poista kaikki sanat toistetuilla kirjaimilla

Tämä lyhensi hakutilaa huomattavasti 200 000 ~ 370 000 sanan luetteloista paljon pienempi 35 000 ~ 65 000 sanaa.

Bittimaskien käyttö

Bittimaskit ovat tilojen kokonaislukuesityksiä. Bittimaskeilla on useita etuja:

  • Bittimaskit edustavat tätä ongelmaa hyvin. Kirjainten järjestyksellä ei ole väliä, joten kaikki sanayhdistelmät voidaan esittää 26-numeroisena 0- ja 1-sarjana, jolloin kukin numero edustaa sitä, onko yhdistelmässä kirjain vai ei. Esimerkiksi. jos sanaryhmä sisältää e-kirjaimen, viides numero on 1, muuten 0. 0.
  • Bittimaskit ovat tehokkaita: Koska hakutila on vakio, bittimaskit tarjoavat tehokkaan tallennuksen ja Esitys kaikista mahdollisista kirjainyhdistelmistä. Lisäksi bittitoiminnot ovat nopeita; jotta voidaan testata, voidaanko kaksi bittistä naamiota yhdistää suuremman bittimaskin tuottamiseksi, tarkista, onko kahden maskin bittisuuntainen JA 0 yhtä suuri kuin molemmat. nopea toiminta.

Tee siis jokaisesta sanasta bittimaski, joka voidaan esittää kokonaislukuna. Esimerkiksi sana ”ohjaamo” kartoitetaan 111-bittiseen maskiin, joka on desimaaliluku 7. Sana ”be” kartoitetaan arvoon 10010, joka on desimaaliluku 18. Ja niin edelleen. Suurin mahdollinen bittimaski on sellainen, jossa on kaikki aakkoset, mahdollinen täydellinen pangramatila, 1111111111111111111111111111, joka on desimaaliluku 67108 863 tai 2½ -1. Tämä sopii hyvin tavalliseen allekirjoitettuun 32-bittiseen kokonaislukuun, joka voi edustaa kohtaan 2³¹-1.

Bittimaskien käyttäminen pakkaa tilaa entisestään, kun yksittäis sanan anagrammit kartoittuvat samaksi bittimaskiksi. Sekä ”uunin” että ”linkin” kartta maskiin 10110100000000, joka on desimaaliluku 11520. Tämä vähentää edelleen 35 000 ~ 65 000 sanan hakutilaa 25 000 ~ 45 000 bittiseksi naamioksi.

Säilytä bittimaskin kartoitus takaisin sanajoukkoon, josta ne on johdettu. Tästä on hyötyä sanasarjojen tulostuksessa.

Täydellisen pangramin etsiminen dynaamisella ohjelmoinnilla

Piirretty leluesimerkki vain englanninkielisen aakkosen viidelle ensimmäiselle kirjaimelle, ae

Algoritmin ydin on melko yksinkertainen:

Kun otetaan huomioon mahdollinen tila (joka koostuu kelvollisista olemassa olevien sanojen yhdistelmistä), kokeile kaikkia alkuperäisen sanaluettelon peitteitä nähdäksesi, onko mahdollista luoda uusi kelvollinen tila (tarkistamalla, onko tila ja naamio ovat 0, mikä tarkoittaa, että päällekkäisiä kirjaimia ei ole). Luo uusi tila käyttämällä bittiä TAI-operaatiota, joka yhdistää kaikki 1: t yhteen. Jatka jokaisen löydetyn uuden valtion kohdalla, kunnes tutkimattomia tiloja ei ole enää. Jos tämä saavuttaa lopun, se tarkoittaa, että algoritmi on löytänyt ainakin yhden mahdollisen täydellisen pangram-sanaryhmän. Ensimmäinen mahdollinen tila, joka voi luetella kaikki mahdolliset tilat, on tyhjä tila tai 0, johon ei sisälly aakkosten kirjaimia. Joten aloita siitä ja löydä sitten rekursiivisesti, mitkä tilat ovat mahdollisia.

Yksi valtava tehokkuushyöty on huomata, että jaksottaiseen tilaan päästään monella tapaa ja että työ valtion kanssa ei muutu sen perusteella, miten se tapahtuu saavutettiin. Joten tallenna jokaisen tilan tulos sen sijaan, että toistat työtä, kun tilaa tarkastellaan uudelleen. Tätä tekniikkaa kutsutaan dynaamiseksi ohjelmoinniksi ja se muuttaa monimutkaisen kombinatorisen ongelman lineaariseksi ohjelmaksi. Ajoittaisen tilan tallennusprosessia kutsutaan muistiinpanoksi.

Luo siis taulukko, jonka koko on 2²⁶ välillä 0 – 67 108 863, mukaan lukien. Jokainen indeksi edustaa bitin naamaritilaa, kuten edellä on selitetty. Taulukon kunkin indeksin arvo edustaa tilasta tunnettua. 0 tarkoittaa joko sitä, että tila on koskematon tai saavuttamaton. 1 tarkoittaa, että valtio on löytänyt tavan saavuttaa mahdollinen täydellinen pangram-tila. -1 tarkoittaa, että valtio ei ole löytänyt tapaa päästä loppuun.

Alla oleva pseudokoodi:

Interlude: monimutkaisuus ja käytännön ajonaika-analyysi

On olemassa 2²⁶ mahdollista bittinaamaria 26-bittiselle sarjalle. Koska kutakin tilaa käsitellään muistiinpanon vuoksi vain kerran, tämän algoritmin ajoaika on O (n 2 ^ d), missä d on aakkosen koko 26. Muuttuja n ei tarkoita sanojen määrää, mutta bittimaskien lukumäärä. 67 108 863 ja karkeasti 45 000 bittisiä naamioita käytettäessä tämä on noin 3 biljoonaa, jonka MacBook Pro -laitteeni pystyi käsittelemään noin 45 minuutissa; ajettava mihin tahansa nykyaikaiseen tietokoneeseen. On myös syytä huomata, että rekursiivinen puhelupino ei koskaan tule syvemmälle kuin 26 (todennäköisesti koskaan syvemmälle kuin 15), joten se on myös hyvin hallittavissa myös tästä ulottuvuudesta.

Yksi bittimaski-lähestymistavan etu vain 2⁶⁶ tilaa on, että kaikki tilat voidaan tallentaa muistiin. Koska tilaa on vain 3 arvoa (-1, 0, 1), tämä voidaan tallentaa yhteen tavuun. Yhdellä tavulla tilaa kohden 2²⁶ tilaa tulee noin 67 megatavuun, mikä on jälleen hyvin hallittavissa.

Aakkosen kasvaessa hakutila kuitenkin kasvaa eksponentiaalisesti ja samoin ajoaika, aiheuttaen ongelmasta tulee vaikeasti ratkaistava. Lyhyt keskustelu suurimman aakkosen täydellisen pangramin lähestymisestä on alla olevassa ”Kieli suuremmilla aakkosilla” -osiossa.

Suunnatun asyklisen kuvaajan (DAG) luominen dynaamisesti

DAG: n piirtäminen vain bittimaskeille, joiden tila on 1

Nyt kun ovat täyttäneet bittimaski-tilat, aika noutaa ratkaisu!

Jotta löydettäisiin joukko sanoja, jotka loivat joukon mahdollisia täydellisiä pankrameja, meidän on johdettava, mitkä välitilat olivat kiinteitä lopputilojen säveltämisessä. Sitten jatkokysymys on, mitkä muut välittäjävaltiot muodostivat nämä välittäjätilat ja niin edelleen, kunnes jäljellä ovat vain tilat, jotka kartoittavat suoraan sanoihin. Tätä prosessia kutsutaan takaisinsoittoksi.

Säilyttämiseksi valtioiden välisten suhteiden seuraamiseksi tavoitteena on luoda Di rected Acyclical Graph (DAG), joka ylläpitää välittäjätiloja, jotka muodostavat minkä tahansa tilan. DAG: t on helppo kulkea tuotosten hakemiseksi erityisesti niiden ei-suhdanteiden vuoksi. Rakentaaksesi, aloita mahdollisesta täydellisestä pangram-tilasta ja luo suunnattu reuna (nuoli), joka osoittaa sen muodostaviin välittäjätiloihin. Toista prosessi välittäjävaltioiden kanssa, niin se tuottaa DAG: n. Syklejä ei tule koskaan olemaan, koska nuolet osoittavat aina tilaan, jolla on pienempi arvo.

Sen sijaan, että rakennettaisiin uudelleen etsinnässä löydetyt suhteet, joihin sisältyy uudelleen liikuttelu biljoonien mahdollisten tilayhdistelmien kautta, on tehokkaampaa rakentaa DAG dynaamisen ohjelmointivaiheen aikana. Jos vasta rakennettu tila voi saavuttaa mahdollisen täydellisen pangram-tilan, ratkaisumenetelmän sisällä tallenna suunnattu reuna uudesta rakenteesta alkuperäiseen tilaan vain, jos alkuperäinen tila on pienempi kuin sen komplementti (reunan päällekkäisyyksien vähentämiseksi).

Tulosta työsi hedelmät puumuodossa!

Leluesimerkin tulos

Todennäköisesti helpoin muoto tulevien sanaryhmien tarkastelemiseksi on luetella ne puiksi, joiden juurisolmu on täydellinen pangram-tila. Kun otetaan huomioon DAG, joka on rakennettu ylhäältä, paras tapa purkaa se on tehdä se rekursiivisesti, kirjoittamalla kukin tila levylle jokaisessa vaiheessa muistin sijasta, koska puu on suuruusluokkaa suurempi kuin DAG.

Tämän laajennuksen parannus on tiivistää tilat, joissa on vain yksi mahdollinen sanayhdistelmä. Tila, joka on naamio sanoille, eikä mitään sen säveltäviä substaatteja, voidaan triviaalisesti tiivistää. Tila voidaan tiivistää, jos sen alatyypit ja sen yhdistelmät voidaan tiivistää, eikä kaikilla itsestään ja lapsiltaan johdetuilla naamioilla ole päällekkäisiä bittejä / merkkejä. Yhteenvetoisen DAG: n tulostaminen parantaa tuloksena olevan tulospuun luettavuutta lyhentämällä ja yksinkertaistamalla sitä.

Koska yhteenveto riippuu vain pienemmästä tilasta, iteroidaan taulukon läpi alkuperäisestä tilasta 0 ylöspäin ja Yllä olevien sääntöjen avulla voit hallita yhteenvetosääntöä, jotta tämä voidaan suorittaa lineaarisessa ajassa.

Tuotetut Pangram-puut!

Voit vapaasti kulkea täydellisten pangramipuiden läpi nähdäksesi, jos voi löytää mielenkiintoisia lauseita!

On olemassa monia mahdollisia täydellisiä pankrameja

Olin yllättynyt siitä, kuinka monta täydellistä mahdollista pankramia oli. Siellä on paljon! Paras strategia niiden jakamiseksi ei vaadi monimutkaista luonnollisen kielen prosessoria. Kun ehdokkaan sanat on merkitty sopivaksi substantiiviksi tai verbiksi, sanapussin on sisällettävä vähintään yksi substantiivi, yksi verbi ja oikea suhde substantiiveihin ja verbeihin.

Datan laatu on vaikea ongelma

Algoritmiosa kesti kaksi päivää, mutta tietojen laatuongelma kesti kaksi viikkoa. Kun mainitsin tämän havainnoni ystävällesi, joka on vanhempi insinööri Google, hän ei ollut yllättynyt ja kommentoi, että tietojen laatuongelmat ovat vaikeimpia tekniikan ongelmia. Oppitunti.

Täydellisten Pangramien säännöt

Täydelliseksi pangramiksi luokitellaan paljon vivahteita! Halusin etsiä pankrameista ilman välilyöntejä (esim. Hm, pht), mutta on olemassa myös muita suosittuja rajoituksia, kuten lyhenteet, lyhenteet, supistukset, alkuarvot, eristetyt kirjaimet, omat substantiivit ja roomalaiset numerot. On myös sanoja, jotka ovat kirjainten nimiä, kuten Qoph, jonka tunsin huijaavan.

Joidenkin näiden rajoitteiden ollessa lievennettyjä on paljon ”täydellisiä” pangrameja. . Lyhenteitä ja nimikirjaimia on paljon.

Asteriski

Asteriski on paikallaan, koska kaikkien englannin täydellisten pangramien määritelmää ei ole määritelty hyvin. On vivahteita liittyy siihen, mitä pitäisi sallia täydellisissä englanninkielisissä räjähdyksissä. On myös paljon väitteitä siitä, ovatko jotkut sanat edes englanninkielisiä sanoja. Näiden vivahteiden vuoksi on todella vaikea sanoa, että olen löytänyt kaikki täydelliset pangramit. Voin esittää kaksi väitettä melko luottavaisin mielin:

  1. Olen löytänyt menetelmän kaikkien täydellisten englanninkielisten ja muiden kielten pangramien tuottamiseksi samankaltaisilla tai pienemmillä merkistöillä.
  2. I ovat luetelleet kaikki sanasarjat, jotka voivat muodostaa täydelliset rytmit käyttämällä virallista Scrabble-turnaussanakirjaa y, OWL3.

Voit vapaasti tuottaa omia täydellisiä pankramejasi tässä viestissä kuvatuilla tekniikoilla!

Täydellisten Pangramien riippuvuus walesin ja arabian juurista

Walesin ja arabian kielellä johdetut sanat olivat todella tärkeitä täydellisten englanninkielisten pangramien olemassaololle (ellei täydellisen pangramin rajoituksia lievennetä). Käyttämällä OWL3-sanaluetteloa ja tiukkoja sääntöjä täydellisistä pankrameista, ei ole olemassa täydellisiä pankrameja, jotka eivät sisällä sanoja ”cwm (s)” tai ”crwth (s)”, molemmat walesinkieliset sanat. Kansainvälisessä Scrabble-sovelluksessa arabiasta johdettu sana ”waqf (s)” on kelvollinen sana, joka voi tuottaa täydellisiä pankrameja turvautumatta ”cwm (s)” tai ”crwth (s)”.

Työnkulun tehokkuus

Oli tärkeää tehostaa tehtävien rinnakkaistamista tämän projektin aikana. Täysi ajo kestää 25 minuuttia Unix-sanakirjassa ja lähes tunnin todella suurissa sanakirjoissa. Minulla oli aluksi ongelmia kontekstin vaihdossa 30 minuutin ikkunassa, mutta paransin sitä, kun edistyin parantamaan tuottavuuttani.

Laajennus / Yleistäminen – Anagram Finder

Täydellinen pangram haku vastaa myös merkkijonon ”abcdefghijklmnopqrstuvwxyz” anagrammitunnistinta. Entä jos haluat rakentaa yleisen anagrammietsimen?

Samaa tekniikkaa voidaan käyttää niin kauan kuin osavaltioiden edustus- ja hallintosäännöt tarkistetaan sanayhdistelmän kelvollisuus päivitetään. Sen sijaan, että tiloja hallinnoitaisiin kokonaislukuna, tilan seuraaminen olisi helpompaa asiaankuuluvien merkkien karttana. Yhdistelmien kelvollisuuden selvittäminen tarkoittaa, että kahden kartan yhdistelmä ei ylitä anagrammin haluttu merkkimäärä jokaiselle kirjaimelle. Varmista vain, että tilatila on käsiteltävissä; liian monilla kirjaimilla hakutila voi saada todella suuren hetkessä. Onko sinulla oikeus toistaa sanoja? Varmista, että määrität nämä säännöt sisällä dynaaminen ohjelmointi ratkaisu.

Kielet suuremmilla aakkosilla

Iroha on kuuluisa japanilainen täydellinen pangram-runo kirjoitettu Heian-kaudella

Tämä lähestymistapa ja ratkaisu ovat lineaarisia sanaryhmän koossa, mutta eksponentiaaliset aakkosissa. Tämä lähestymistapa ei välttämättä toimi suurempien merkistöjen kanssa, sanotaan modernin japanin kielellä, jolla on 46 tavua. 2⁴⁶ on 70,368,744,177,664; yli miljoona kertaa suurempi kuin englanninkielinen hakutila 2 2⁶ = 67 108 864.

Ei ole täysin selvää, toimisiko tämä lähestymistapa japanilaisille. Jos japaninkielellä on riittävän alhainen entropia, mikä on mahdollista, tämä lähestymistapa olisi elinkelpoinen. Koko 22-matriisin alustamisen sijasta tiloja seurataan kartalla. Lisäksi japanin rakennetta voidaan hyödyntää; esimerkiksi kana を (wo) käytetään melkein yksinomaan post-positiopartikkelina, ja se voidaan sulkea pois hausta, mikä vähentää hakutilaa.

Khmerien kambodžan kielellä on suurin aakkoset 74: llä. Toinen mahdollinen seuraava vaihe on tutkia ratkaisuja, jotka ovat aakkoskokojen alapuolella eksponentiaalisia.

Inspiraatio

Minua inspiroi Aubrey De Greyn edistysaskel etsittävän koneen kromaattisen numeron löytämisessä vähintään 5. Tämä on merkittävä edistysaskel, joka saavutettiin laskennallisilla perusmenetelmillä.

On sanomattakin selvää, että täydellisten pangramien löytäminen ei pidä kynttilää tason kromaattisen luvun alarajan parantamiseksi.

Tämä saa minut uskomaan, että on paljon matalasti roikkuvia hedelmiä koskevia ongelmia, joilla on yksinkertaiset laskentamenetelmät manuaalisesti ratkaisemattoman ongelman ratkaisemiseksi. Haastan sinut löytämään ja ratkaisemaan joitain näistä ongelmista. Kerro minulle, jos löydät jotain!

Kiitos

Olen melko kiitollinen erinomaisista ystävistäni, jotka auttoivat oikolukemalla ja häiritsemällä tätä kanssani, erityisesti Anna Zeng, Catherine Gao, Danny Wasserman, George Washington ja Nick Wu!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *