Dowker'ın bir düğüm notasyonu ve geçiş işaretleri dikkate alındığında, parantez polinomunu hesaplayın.
Daha fazla teknik tanım olmasına rağmen, bu zorluk için bir düğümün iki ucunu birbirine bağlayarak fiziksel olarak yapılmış bir düğüm gibi düşünmek yeterlidir . Düğümler üç boyutta bulunduğundan, onları kağıt üzerine çizdiğimizde, düğüm diyagramlarını kullanırız - geçişlerin tam olarak iki çizgiden oluştuğu, biri üst üste iki çizgiden oluşan iki boyutlu çıkıntılar.
Burada (b) ve (c) aynı düğümün farklı diyagramlarıdır.
Kağıt üzerinde bir düğüm şemasını nasıl temsil ederiz? Çoğumuz Rembrandt değiliz, bu nedenle aşağıdaki gibi çalışan Dowker notasyonuna güveniyoruz :
Düğümden isteğe bağlı bir başlangıç noktası seçin. Düğüm boyunca isteğe bağlı bir yöne doğru hareket edin ve karşılaştığınız geçişleri 1'den başlayarak, aşağıdaki değişikliklerle numaralandırın: eğer bir çift sayıysa ve şu andaki geçişin üzerinden geçiyorsanız, o sayıyı ihmal edin. Son olarak, 1, 3, 5, vs.'ye karşılık gelen çift sayıları seçin.
Bir örnek deneyelim:
Bu düğümde başlangıç noktamız olarak "1" i seçtik ve yukarı ve sağa doğru ilerlemeye devam ettik. Ne zaman ipin bir başka parçasının üzerine ya da altına girersek, geçiş noktasını bir sonraki doğal sayıya atarız. Örneğin [3,-12]
şemada , bir geçişin üzerinden geçen tellere karşılık gelen çift sayıları ihmal ediyoruz . Yani, bu şema ile temsil edilecektir [[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]
. 1, 3, 5, 7 vb [6,-12,2,8,-4,-10]
. Arkadaşların listelenmesi bize verir .
Burada dikkat edilmesi gereken birkaç şey var. İlk olarak, Dowker notasyonu, belirli bir başlangıç noktası ve yönü seçebileceğimiz için belirli bir düğüm için benzersiz değildir . Ancak, not verildiğinde, düğümün yapısı tam olarak belirlenebilir (teknik olarak birinci düğüm bileşenlerinin yansıması kadar). Tüm Dowker notasyonları olası düğümleri oluşturamasa da, bu problemde girişin gerçek bir düğümü temsil ettiğini varsayabilirsiniz.
Bir düğümün yansımaları arasındaki belirsizliği önlemek ve zorluğu çözmeyi kolaylaştırmak için, size giriş olarak geçiş işaretlerinin bir listesi de verilecektir .
Olumlu bir geçişte, alt çizgi üst çizginin bakış açısından sola gider. Negatif bir geçişte sağa gider. Not (yani hem ters düğüm dolaşma yönünü tersine aşırı hattı ve altında geçit işaretleri değişmez line). Örneğimizde, geçiş işaretleri vardır [-1,-1,-1,1,-1,1]
. Dowker notasyonu ile aynı sırada verilirler, yani 1, 3, 5, 7, vb. Numaralı geçişler için.
Yukarıdaki resimde, formunun ilk diyagramda, belirtilen geçiş , transforme edilebilir , ikinci şekil (aka gibi pozitif yumuşatma ) ya da üçüncü bir şekil (olduğu gibi olumsuz bir yumuşatma ).
Aklınız mı karıştı? Bir örnek yapalım, parantez polinomunu bulmaya çalışalım (Not: bu birbirine bağlanmış iki düğümdür. Bu tür bir diyagram bu zorlamada potansiyel bir girdi olmayacaktır, çünkü girdiler sadece tek düğümler olacaktır, ancak bir algoritmada ara sonuç.)
İlk önce kural 3'ü kullanıyoruz.
Her iki düğümde de 3. kuralı tekrar kullanıyoruz.
Bu 4 yeni düğümü birinci denklemin yerine koyarız.
Bu 4'e 1 ve 2 numaralı kuralların uygulanması bize
Demek bu bize
Düğüm teorisi için kısa tanıtımınızı tamamladığınız için tebrikler!
Giriş
İki liste:
Dowker notasyonu, örn
[6,-12,2,8,-4,-10]
. Geçişleri numaralandırma karşılık gelen tek sayılar 1. başlamalıdır[1,3,5,7,...]
kapalı ve gereken olmayan giriş olarak sağlanabilir.Dowker notasyonuna karşılık gelen geçişler için işaretler (
1
/-1
veya eğer tercih ederseniz0
/1
veyafalse
/true
veya'+'
/'-'
), örn[-1,-1,-1,1,-1,1]
.
Bir çift liste yerine, örneğin bir çift listesine sahip olabilirsiniz. [[6,-1],[-12,-1],...
Çıktı
[[1,-2],[5,0],[1,1],[-1,3]]
[0,1,0,5,1,0,-1]
kurallar
Bu bir kod golf mücadelesi. Standart boşlukların hiçbiri kullanılamaz ve Dowker notasyonlarını veya Bracket polinomlarını hesaplamak için araçlara sahip kütüphaneler kullanılamaz. (Bu kütüphaneleri içeren bir dil, kütüphaneleri / paketleri değil hala kullanılabilir).
Testler
// 4-tuples of [dowker_notation, crossing_signs, expected_result, description]
[
[[],[],[[1,0]],"unknot"],
[[2],[1],[[-1,3]],"unknot with a half-twist (positive crossing)"],
[[2],[-1],[[-1,-3]],"unknot with a half-twist (negative crossing)"],
[[2,4],[1,1],[[1,6]],"unknot with two half-twists (positive crossings)"],
[[4,6,2],[1,1,1],[[1,-7],[-1,-3],[-1,5]],"right-handed trefoil knot, 3_1"],
[[4,6,2,8],[-1,1,-1,1],[[1,-8],[-1,-4],[1,0],[-1,4],[1,8]],"figure-eight knot, 4_1"],
[[6,8,10,2,4],[-1,-1,-1,-1,-1],[[-1,-7],[-1,1],[1,5],[-1,9],[1,13]],"pentafoil knot, 5_1"],
[[6,8,10,4,2],[-1,-1,-1,-1,-1],[[-1,-11],[1,-7],[-2,-3],[1,1],[-1,5],[1,9]],"three-twist knot, 5_2"],
[[4,8,10,2,12,6],[1,1,-1,1,-1,-1],[[-1,-12],[2,-8],[-2,-4],[3,0],[-2,4],[2,8],[-1,12]],"6_3"],
[[4,6,2,10,12,8],[-1,-1,-1,-1,-1,-1],[[1,-10],[2,-2],[-2,2],[1,6],[-2,10],[1,14]],"granny knot (sum of two identical trefoils)"],
[[4,6,2,-10,-12,-8],[1,1,1,1,1,1],[[1,-14],[-2,-10],[1,-6],[-2,-2],[2,2],[1,10]],"square knot (sum of two mirrored trefoils)"],
[[6,-12,2,8,-4,-10],[-1,-1,-1,1,-1,1],[[1,-2],[1,6],[-1,10]],"example knot"]
]
Dış kaynaklar
Meydan okuma için gerekli değil, ancak ilgileniyorsanız:
Dowker notasyonu tanımımda bir hata yakaladığı için @ChasBrown ve @ H.Pwiz teşekkürler