Belirli bir sınırlayıcı kutu içindeki rastgele kendiliğinden kaçınan kafes döngüsü


25

Slither Link bulmacasıyla bağlantılı olarak merak ediyorum: Diyelim ki kare hücreli bir ızgaram var ve basit olası bir ızgara kenarları döngüsünü bulmak istiyorum.n×n

Bunu yapmanın bir yolu, sınırları basit döngüler olan ve geçişleri için rasgele bir kare seçmeyi içeren ve değiştirilmiş kare kümeleri hala basit bir çevrime sahipken, çevirmeyi tutmak için rastgele bir kare seçmekten oluşan bir kareler kümesi olan bir Markov zinciri kullanmaktır. onun sınırı. Bir kimse bu şekilde herhangi bir basit döngüden başkasına geçebilir (kabukların varlığı ile ilgili standart sonuçlar kullanarak), bu sonuçta homojen bir dağılıma dönüşür, ama ne kadar hızlı?

Alternatif olarak, daha iyi bir Markov zinciri veya basit çevrimleri seçmek için doğrudan bir yöntem var mı?

ETA: Aradığınız blog sayısını, aradığım döngü sayısını ve bu sayıların bazıları için OEIS'e işaret edenleri hesaplamak için bakın . Bildiğimiz kadarıyla, sayma rastgele nesille hemen hemen aynı şeydir ve bu sayıların çarpanlara ayrılmasında belirgin bir kalıp olmamasının ve OEIS girişinde bilinen bir basit doğrudan yöntemin bulunma ihtimalinin bulunmadığının bir formülünün bulunmamasına inanıyorum. . Ancak bu hala bu zincirin ne kadar çabuk birleştiğine ve daha iyi bir zincirin açık olup olmadığına dair soruları bırakıyor.


1
OEIS dizisi tarafından sayılan kümelerin sınırı mutlaka basit çevrimler değildir, örneğin 3x3 için, 218'den biri orta hariç tüm karelere sahiptir ve bir dört daha bir köşeyi kaldırarak verilir.
Colin McQuillan

1
2xn ızgaraları için sayılar oeis.org/A059020'de belirtildiği gibidir . 3xn için, 6,40,213,1049,5034,23984,114069,542295,2577870,12253948,58249011,276885683,1316170990,6256394122,29739651711, 141366874247, ... (OE) 'de olduklarından eminim. El ile hesaplamak için transfer matrisini ayarladım ancak makineyle üretilmiş bir matrisle karşılaştırdım ve farklı olan tek giriş elden doğruydu ve makine yanlıştı. (- Makine matris merkezinde bir delik olan bir octomino izin olurdu Bu 3x3 durumda göstermek olmalıdır.)
David Eppstein

1
Bu sırayı Neil Sloane'a göndermelisin, böylece OEIS'e koyabilir.
Peter Shor

1
@David: Teşekkürler. Muhtemelen, transfer matrisi yöntemini daha iyi öğrenmenin zamanı geldi.
Yoshio Okamoto 20:11

2
@David: Hayatımın iki saatini bulmacanın linkiyle harcadın .. Thx!
domotorp

Yanıtlar:


1

Görünüşe göre rastgele bir döngü seçmek için bir grafikteki döngü sayısı için sayıları kullanıyorsunuzdur, eğer bu sayı için rastgele bir yaklaşımınız olsaydı, o zaman hala yaklaşık olarak eşit bir döngü seçebiliyordunuz.

Bir grafik devir sayısının bu Not kenar içerir, ( u , v ) , aşamalara göre devir sayısı eşittir G - ( u , v ) artı basit yolların sayısı u için v içinde G - ( u , v ) . Bu durumda, sayısı için bir polinom zamanı yaklaşımı ile u - v yolları, bir çok terimli bir zaman yaklaşımı aşamalı kadar yapı elde edilebilir G gitmek gibi yaklaşan, her seferinde bir kenar. G(u,v)G(u,v)uvG(u,v)uvG

Aslında bir döngü seçmek için daha basit bir yöntem olduğunu düşünüyorum. , n × n karelerin etrafındaki kenarların tüm grafiği olsun . Her kenar için ( u , v ) bu kenarı içeren döngü sayısını bulun (ki bu G - ( u , v ) ' daki u - v yolu sayısıdır ). Ardından rasgele, onu içeren döngü sayısına göre ağırlıklı bir kenar seçin. Bu, rastgele seçilen döngünüzdeki ilk kenar olacaktır. Diğer tüm kenarlar bir seferde bir kenarı uzatmak suretiyle seçilecektir.Gn×n(u,v)uvG(u,v)

CvsveNveCuNuvsG[V(C{vs,ve})]uve(ve,u)

Bu şekilde, her biri bir polinom zaman yaklaştırma algoritması için az sayıda hesaplama gerektiren bir polinom sayısı seçilmiştir. Böylece, bir döngü düzgün şekilde seçilebilir.

Şu anda hızlı yol sayısı yaklaşım algoritmaları için referanslar isteyen bir yığın değiştirme sorum var . Bu algoritmaların var olduğunu ancak henüz bulamadıklarını birkaç yerde okudum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.