SStateAmaranth
Fluxuri de lucru

Fluxuri de programare · Echivalența stărilor DFA accesibile

03
Produs

Fluxuri de lucru

Grupează stările accesibile ale unui DFA complet cu cel mult 16 stări și patru simboluri după sufixele acceptate. Testează echivalența și distingerea, excluzând stările inaccesibile și respingând tranzițiile invalide.

01

Descarcă aplicația

Selectează un dosar și cere asistentului să citească fișierele relevante înainte de editare. Definește obiectivul și limitele sarcinii.

02

Deschide dosarul proiectului

Alege un endpoint compatibil. Instrumentele disponibile și calitatea răspunsurilor depind de modelul și serverul configurate.

03

Conectează și testează modelul

Verifică modificările și rezultatele comenzilor. Rulează verificările proiectului înainte de acceptare; codul generat nu este testat automat.

04

Verifică modificările și rulează testele

Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.

Echivalența stărilor DFA accesibile

Fluxuri de lucru
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

Verifică înainte de aplicare. Verifică modificările și rezultatele comenzilor. Rulează verificările proiectului înainte de acceptare; codul generat nu este testat automat.

Spațiu de programare cu AI

Următoarea idee începe aici.

Descarcă pentru Windows ↗