SStateAmaranth
Ruang kerja kode dengan AI

Kesetaraan status DFA terjangkau

Kelompokkan status terjangkau pada DFA lengkap dengan paling banyak 16 status dan empat simbol berdasarkan akhiran yang diterima.

● ● ●StateAmaranth●
Alur kerja · Kesetaraan status DFA terjangkau ×
def dfa_classes(table, accepting):
    if type(table) is not list or not 1 <= len(table) <= 16:
        raise ValueError("state count")
    n = len(table)
    if type(table[0]) is not list or not 1 <= len(table[0]) <= 4:
        raise ValueError("alphabet size")
    width = len(table[0])
    if any(type(row) is not list or len(row) != width or
           any(type(x) is not int or not 0 <= x < n for x in row)
           for row in table):
        raise ValueError("complete transition table")
    if type(accepting) is not set or any(
        type(x) is not int or not 0 <= x < n for x in accepting):
        raise ValueError("accepting states")
    seen, pending = {0}, [0]
    while pending:
        for dest in table[pending.pop()]:
            if dest not in seen:
                seen.add(dest); pending.append(dest)
    groups = [g for g in (seen & accepting, seen - accepting) if g]
    while True:
        owner = {s: i for i, g in enumerate(groups) for s in g}
        refined = []
        for group in groups:
            buckets = {}
            for state in sorted(group):
                key = tuple(owner[d] for d in table[state])
                buckets.setdefault(key, set()).add(state)
            refined.extend(buckets.values())
        if len(refined) == len(groups):
            return sorted([sorted(g) for g in refined])
        groups = refined
✳Kelompokkan status terjangkau pada DFA lengkap dengan paling banyak 16 status dan empat simbol berdasarkan akhiran yang diterima.
✓ PerubahanTinjau sebelum menerapkan ↗
Ilustrasi ruang kerja
ProyekUji status setara dan berbeda, keluarkan yang tak terjangkau dan tolak transisi tidak sah.
Tinjau sebelum menerapkanBandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
ModelAtur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Alur kerja

Kesetaraan status DFA terjangkau

Alur kerja ↗
Alur kerja
def dfa_classes(table, accepting):
    if type(table) is not list or not 1 <= len(table) <= 16:
        raise ValueError("state count")
    n = len(table)
    if type(table[0]) is not list or not 1 <= len(table[0]) <= 4:
        raise ValueError("alphabet size")
    width = len(table[0])
    if any(type(row) is not list or len(row) != width or
           any(type(x) is not int or not 0 <= x < n for x in row)
           for row in table):
        raise ValueError("complete transition table")
    if type(accepting) is not set or any(
        type(x) is not int or not 0 <= x < n for x in accepting):
        raise ValueError("accepting states")
    seen, pending = {0}, [0]
    while pending:
        for dest in table[pending.pop()]:
            if dest not in seen:
                seen.add(dest); pending.append(dest)
    groups = [g for g in (seen & accepting, seen - accepting) if g]
    while True:
        owner = {s: i for i, g in enumerate(groups) for s in g}
        refined = []
        for group in groups:
            buckets = {}
            for state in sorted(group):
                key = tuple(owner[d] for d in table[state])
                buckets.setdefault(key, set()).add(state)
            refined.extend(buckets.values())
        if len(refined) == len(groups):
            return sorted([sorted(g) for g in refined])
        groups = refined
Ruang kerja kode dengan AI

Sederhanakan kode berkeadaan sambil mempertahankan perilaku teramati

StateAmaranth adalah ruang kerja pemrograman Windows untuk memeriksa perangkat lunak berkeadaan bersama model AI terhubung. Mulailah dengan peristiwa yang diterima sistem dan hasil yang dapat diamati pemanggil. Permintaan penyederhanaan keadaan memerlukan konteks itu agar representasi lebih kecil tidak menjadi tujuan dengan mengorbankan perilaku aplikasi.

Contoh keadaan deterministik yang diberikan menyediakan satu tugas konkret: memeriksa ekuivalensi keadaan yang dapat dicapai sambil mempertahankan perilaku penerimaan. Sertakan tabel transisi dan keadaan awal yang dimaksud dalam pembahasan. Minta model menjelaskan perbedaan yang penting sebelum meminta perubahan, terutama jika aplikasi di sekitarnya menampilkan lebih dari hasil terima atau tolak sederhana.

Tinjau setiap usulan pengelompokan terhadap urutan peristiwa singkat dengan hasil yang diketahui. Sertakan jalur yang mencapai keadaan berbeda dan kasus entri yang tidak dapat dicapai, lalu jalankan pemeriksaan dalam proyek. Periksa pula antarmuka pengguna pengelompokan, karena perubahan nomor atau representasi keadaan dapat merusak pemanggil meskipun perilaku penerimaan dipertahankan.

Model AI tanpa batasan dapat dipilih melalui endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung dan menawarkannya. Konfigurasikan kredensial sesuai kebutuhan dan verifikasi batas konteks serta ketersediaan alat. Perilaku respons model tetap bergantung pada endpoint; bukti penyederhanaan yang aman berasal dari pengamatan yang Anda nyatakan dan pemeriksaan yang Anda lakukan.

Pertanyaan untuk refaktor mesin keadaan

Apa yang perlu dianggap sebagai perilaku teramati dalam permintaan saya?

Daftarkan keluaran atau keputusan yang diandalkan pemanggil, bukan hanya nama keadaan internal. Jika transisi menghasilkan tindakan atau kesalahan, sertakan juga. Contoh berbasis penerimaan yang ditunjukkan mungkin lebih sempit daripada perilaku yang harus dipertahankan aplikasi Anda.

Bisakah keadaan dengan penerimaan setara selalu digabung dalam aplikasi?

Tidak tanpa memeriksa bagian kontrak lainnya. Aplikasi mungkin menampilkan pengenal, tindakan, atau efek lain yang bergantung pada keadaan. Minta asisten memeriksa kode penggunanya sebelum menerapkan argumen ekuivalensi yang hanya berdasarkan penerimaan.

Bagaimana keadaan yang tidak dapat dicapai perlu ditangani saat peninjauan?

Nyatakan keadaan awal dan cara menentukan ketercapaian. Sertakan data uji dengan entri tidak terjangkau dan keluaran yang dimaksud. Tinjau apakah pemanggil mengharapkan entri itu tetap dapat diidentifikasi sebelum menerima usulan penghapusan atau pengelompokan ulang.

Apa yang perlu diuji setelah pengenal keadaan berubah?

Periksa transisi, referensi tersimpan, dan setiap antarmuka yang menampilkan atau menggunakan pengenal. Jalankan urutan perilaku maupun pemeriksaan bentuk pengelompokan keluaran. Penerimaan yang terjaga saja tidak membuktikan kode dependennya masih menafsirkan representasi dengan benar.

Unduh untuk Windows ↗

StateAmaranth · Diperbarui 2026-10-25