İki normal ifadenin eşdeğer olup olmadığını belirleyen algoritma


12

İki rasgele düzenli ifade verildiğinde, aynı dizelerle eşleşip eşleşmediklerini belirlemek için "etkin" bir algoritma var mı?

Daha genel olarak, iki eşleşme kümesinin kesişiminin boyutunu hesaplayabilir miyiz?

Bunu yapmak için hangi algoritmalar var ve hangi karmaşıklık sınıfında yaşıyorlar?

Kleene yıldızına izin vermezsek, bu resmi değiştirir mi?


"Kavşağın boyutu" ile ne demek istiyorsun? En ilginç durumlarda, sonsuz büyük olacaktır; Eğer wrt boyutlarda ilgilendi ? Σn
Raphael

@Raphael Benim anlayışım, Kleene yıldızını ortadan kaldırmak setin büyüklüğünü sonlu olmaya zorlar.
Matematiksel

Bağlı olmak. Başka hangi operatörlere izin verilir? Tamamlamaya izin verirseniz, söylediğiniz doğru değildir. Ayrıca, Kleene yıldızı ile de durumu istersiniz, bu yüzden yine de açıklığa kavuşturmanız gerekir.
Raphael

Yanıtlar:


12

Hendrik Jan karmaşıklık sınıfı için iyi bir cevap veriyor, ama bir algoritmanın kendisi değil.

Bunu bildiğim en basit algoritma, normal ifadeyi bir DFA'ya dönüştürmektir. Normal bir ifadeyi bir NFA'ya ve bir NFA'yı bir DFA'ya dönüştürmek için bilinen teknikler vardır.

İki DFA'nız olduğunda, eşdeğerlik testi verimli ve karar verilebilir, çünkü bir DFA'nın minimal formu izomorfizme kadar benzersizdir.

Bununla birlikte, bu DFA'ların NFA'lardan oluşturulması çok zaman alabilir ve en kötü durumda katlanarak büyük olan son derece büyük DFAS üretebilir.


11

Normal ifadelerin denkliğinin PSPACE-complete olduğu bilinmektedir, ki bu oldukça kötüdür. "Basit Düzenli İfadeler İçin Karar Problemlerinin Karmaşıklığı" makalesi, düzenli ifadelerin çeşitli alt sınıflarını kendi karmaşıklıklarıyla birlikte listelemektedir. ( bağlantı )


1
e2ee

@dkuper Ek açıklama için teşekkürler. Bu veya uygun referansları eklemek için cevabı düzenlemekten çekinmeyin. (Hatta kendi cevabınızı bile başlatabilirsiniz.)
Hendrik Ocak

Genel düzenli ifadelerin PSPACE-tam olması için bir referans var mı?
Ryan

Bağlantınız öldü. Yeni bir bilgi sunabilir veya en azından bir kısmını ilgili bilgilerden temin edebilir misiniz?
D. Ben Knoble

@ D.BenKnoble Link benim için iyi çalışıyor.
Hendrik Ocak
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.