SStateAmaranth
Alur kerja

Alur kerja pemrograman · Kesetaraan status DFA terjangkau

03
Produk

Alur kerja

Kelompokkan status terjangkau pada DFA lengkap dengan paling banyak 16 status dan empat simbol berdasarkan akhiran yang diterima. Uji status setara dan berbeda, keluarkan yang tak terjangkau dan tolak transisi tidak sah.

01

Unduh aplikasi

Pilih folder dan minta asisten membaca berkas terkait sebelum mengeditnya. Tentukan tujuan serta batas tugas.

02

Buka folder proyek

Pilih endpoint yang kompatibel. Alat yang tersedia dan kualitas jawaban bergantung pada model serta server yang digunakan.

03

Hubungkan dan uji model

Tinjau perubahan dan keluaran perintah. Jalankan pemeriksaan proyek sebelum menerima hasilnya; kode yang dihasilkan tidak otomatis sudah diuji.

04

Tinjau perubahan dan jalankan pengujian

Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.

Kesetaraan status DFA terjangkau

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

Tinjau sebelum menerapkan. Tinjau perubahan dan keluaran perintah. Jalankan pemeriksaan proyek sebelum menerima hasilnya; kode yang dihasilkan tidak otomatis sudah diuji.

Ruang kerja kode dengan AI

Ide berikutnya dimulai di sini.

Unduh untuk Windows ↗