Bu sorunun iki önemli yönü vardır. Biz S2 + geri (S2) bir alt dizge S gerektiğinden
- S2 en az n/2 uzunluğuna sahip olmalıdır. S2 Birleştirme sonrasında
- ve geri (S2) alfabe nedenle çözelti, S son S merkezinden kontrol etmektir gibi
tekrar eden bir model vardır herhangi bir ardışık eleman için.Birini bulursanız, gösterildiği gibi her iki taraftaki öğeleri kontrol edin. Şimdi
Eğer dizesinin sonuna kadar ulaşması mümkün ise, o zaman elementlerin (sonuç) minimum sayısı ardışık elemanlarını bulmak noktaya baştan mesafedir. Bu örnekte, bunun Cı.ı 3
Bunun her zaman olmayabileceğini biliyoruz. Yani merkezde ardışık elemanlar bulamayabilirsiniz. Ardışık elemanların merkezden sonra olduğunu söyleyelim, o zaman aynı testi yapabiliriz.
Ana dize
Alt dize
Kısaltılmış dize
Şimdi t geldiğinde O büyük şüphe. Neden merkezden başlayarak sadece sol tarafı düşünüyoruz? Cevap basittir, birleştirilmiş dizgi S + reverse (S) ile yapılır. Bu yüzden, dizideki son öğenin, birleştirilmiş dizede ardışık olarak geldiğinden eminsin. vermek ardışık alfabeler aranıyor : en azından nihai birleştirilmiş Şimdi dize
karmaşıklık meselesi n alfabe olmalıdır çünkü ana dize ilk yarısında herhangi tekrarı daha iyi bir sonuç verebilir hiçbir yolu yoktur Maksimum O (n) Şimdi her iki taraftaki elemanları iteratif olarak kontrol etmek, O (n) 'nin en kötü durum karmaşıklığını verebilir. yani maksimum n/2 karşılaştırmaları. İkinci kontrolün yapılmasında birçok kez başarısız olabiliriz, böylece karmaşıklıklar yani O (n * n) arasında bir çoğullayıcı ilişkiye sahibiz.
Bunun doğru bir çözüm olduğuna inanıyorum ve henüz bir boşluk bulamadık.
Bir O (n^3) çözümü kabul edilebilir mi? – Sayakiss
Hayır, O (n^3) 'den daha iyi bir çözüme ihtiyacım var. – LTim