Aşağıdaki algoritmik sorun var:
Watson-Crick palindromları olan DNA dizilerini tanıma alanının Turing karmaşıklığını belirleyin.
Watson-Crick palindromları, ters tamamlayıcısı orijinal dize olan dizelerdir. Tamamlayıcı DNA esinlenerek, mektup-bazlı tanımlanır: A, T tamamlayıcısı olan ve Cı-ACGT WC-palindrom G. basit bir örnek tamamlayıcı olmasıdır.
Bunu çözmenin iki yolunu buldum.
Biri boşluğu gerektirir .
- Makine bittiğinde girişi okuma. Giriş bandı çalışma bandına ters sırayla kopyalanmalıdır.
- Makine daha sonra girişi ve çalışma bantlarını soldan okuyacak ve çalışma bandındaki hücrenin girişteki hücrenin iltifat olduğunu doğrulamak için her girişi karşılaştıracaktır. Bu alanı gerektirir .
Diğeri alanı gerektirir .
- Girişi okurken. Giriş kasetindeki giriş sayısını sayın.
- Giriş bandı okunduğunda
- mektubun tamamlayıcısını çalışma bandına kopyalayın
- L harfini çalışma bandının sonuna kopyala
- (Döngü noktası) Sayaç = 0 ise, çalışma bandını temizleyin ve evet yazın, sonra durdurun
- Giriş kaseti L yazıyorsa
- Giriş kafasını sayaç tarafından gösterilen sayıda sola hareket ettirin (ikinci bir sayaç gerektirir)
- Giriş kasetinde R yazıyorsa
- Giriş kafasını sayaç tarafından gösterilen sayıda sağa hareket ettirin (ikinci bir sayaç gerektirir)
- Çalışma bandındaki değeri tutan hücre, giriş bandındaki geçerli hücreyle eşleşiyorsa
- sayacı iki azaltmak
- Sırasıyla R veya L çalışma bandında olmasına bağlı olarak birini sola veya sağa hareket ettirin
- L veya R Komplemanını mevcut L veya R yerine çalışma bandına kopyalayın
- döngüye devam et
- Değerler eşleşmezse, çalışma bandını temizleyin ve hayır yazın, ardından durdurun
Bu, her iki sayacı, geçerli tamamlayıcıyı ve L veya R değerini depolamak için yaklaşık boşluğuna gelir .
Benim sorunum
Birincisi hem doğrusal zaman hem de boşluk gerektirir. İkincisi n 2 gerektirir
Kafam karıştı
İkinci yöntemin en iyi seçenek olduğunu söyleyebilirim, çünkü zaman açısından daha iyi, ama bu cevap sadece şanslı olmak ve bir algoritma bulmaktan geliyor. Bir şeyin uzay karmaşıklığını vermek istersem, doğru algoritmayı bulmakta şans gerektirmez. Bir şey mi kaçırıyorum? Uzay karmaşıklığına cevap vermek için soruna bir çözüm bile getirmeli miyim?