ความสมมูลของสถานะ DFA ที่เข้าถึงได้
จัดกลุ่มสถานะที่เข้าถึงได้ของ DFA สมบูรณ์ไม่เกิน 16 สถานะและสี่สัญลักษณ์ตามส่วนต่อท้ายที่ยอมรับ.
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| โปรเจกต์ | ทดสอบสถานะสมมูลและแยกแยะได้ โดยตัดสถานะที่เข้าถึงไม่ได้และปฏิเสธการเปลี่ยนสถานะผิด. |
|---|---|
| ตรวจสอบก่อนนำไปใช้ | เปรียบเทียบการทำงานจริงกับผลที่คาดหวัง หากการตรวจสอบไม่ผ่าน ให้หาสาเหตุก่อนแก้ไขเพิ่มเติม |
| โมเดล | ตั้งค่า endpoint ที่รองรับ OpenAI หรือ Anthropic ด้วย URL หลักและคีย์ API หากจำเป็น ทดสอบการเชื่อมต่อ เซิร์ฟเวอร์โมเดลในเครื่องต้องทำงานอยู่ เครื่องมือระยะไกลอาจส่งข้อมูลแยกต่างหาก |
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ลดความซับซ้อนโค้ดมีสถานะโดยรักษาพฤติกรรมที่สังเกตได้
StateAmaranth คือพื้นที่ทำงานเขียนโค้ดบน Windows เพื่อตรวจซอฟต์แวร์มีสถานะร่วมกับโมเดล AI ที่เชื่อมต่อ เริ่มจากเหตุการณ์ที่ระบบยอมรับและผลที่ผู้เรียกสังเกตได้ คำขอลดความซับซ้อนของสถานะต้องมีบริบทนี้ เพื่อไม่ให้รูปแบบที่เล็กลงเป็นเป้าหมายจนเสียพฤติกรรมแอป
ตัวอย่างสถานะเชิงกำหนดที่ให้เป็นงานชัดเจนหนึ่ง คือการตรวจความสมมูลระหว่างสถานะที่เข้าถึงได้โดยรักษาพฤติกรรมการยอมรับ นำตารางเปลี่ยนสถานะและสถานะเริ่มต้นที่ตั้งใจเข้าสู่การอภิปราย ขอให้โมเดลอธิบายความแตกต่างที่สำคัญก่อนขอแก้ โดยเฉพาะหากแอปโดยรอบเผยมากกว่าผลยอมรับหรือปฏิเสธง่าย ๆ
ตรวจการจัดกลุ่มที่เสนอเทียบกับลำดับเหตุการณ์สั้นที่ทราบผล รวมเส้นทางไปถึงสถานะต่างกันและกรณีมีรายการเข้าไม่ถึง แล้วรันการตรวจในโปรเจกต์ ตรวจอินเทอร์เฟซที่ใช้กลุ่มด้วย เพราะการเปลี่ยนเลขสถานะหรือรูปแบบอาจทำให้ผู้เรียกเสียแม้รักษาพฤติกรรมยอมรับไว้
เลือกโมเดล AI แบบไม่จำกัดได้ผ่านปลายทางที่รองรับแบบเข้ากันได้กับ OpenAI หรือ Anthropic ซึ่งมีให้ ตั้งค่าข้อมูลรับรองตามจำเป็นและยืนยันขีดจำกัดบริบทกับเครื่องมือ พฤติกรรมตอบของโมเดลยังขึ้นกับปลายทาง หลักฐานว่าลดความซับซ้อนได้ปลอดภัยมาจากสิ่งสังเกตที่คุณระบุและการตรวจที่คุณทำ
คำถามสำหรับการปรับโครงสร้างเครื่องสถานะ
- อะไรควรนับเป็นพฤติกรรมที่สังเกตได้ในคำขอ
ระบุผลหรือการตัดสินใจที่ผู้เรียกพึ่งพา ไม่ใช่แค่ชื่อสถานะภายใน หากการเปลี่ยนสถานะสร้างการกระทำหรือข้อผิดพลาด ให้รวมด้วย ตัวอย่างที่อิงการยอมรับอาจแคบกว่าพฤติกรรมที่แอปจริงต้องรักษา
- สถานะสมมูลด้านการยอมรับรวมกันในแอปได้เสมอหรือไม่
ไม่ได้หากไม่ตรวจข้อกำหนดส่วนอื่น แอปอาจเผยรหัส การกระทำ หรือผลที่ขึ้นกับสถานะอื่น ขอให้ผู้ช่วยตรวจส่วนใช้ผลเหล่านั้นก่อนใช้เหตุผลสมมูลจากการยอมรับเพียงอย่างเดียว
- ควรจัดการสถานะเข้าไม่ถึงระหว่างตรวจอย่างไร
ระบุสถานะเริ่มและวิธีหาเส้นทางเข้าถึง ใส่ชุดทดสอบที่มีรายการเข้าไม่ถึงและผลตั้งใจ ตรวจว่าผู้เรียกคาดหวังให้รายการเหล่านั้นยังระบุตัวได้หรือไม่ก่อนยอมรับการลบหรือจัดกลุ่มใหม่
- ควรทดสอบอะไรหลังรหัสสถานะเปลี่ยน
ตรวจการเปลี่ยนสถานะ การอ้างอิงที่เก็บ และอินเทอร์เฟซใดที่แสดงหรือใช้รหัส รันลำดับพฤติกรรมควบคู่การตรวจรูปทรงกลุ่มที่คืน การรักษาการยอมรับอย่างเดียวไม่พิสูจน์ว่าโค้ดพึ่งพายังตีความรูปแบบถูกต้อง
StateAmaranth · อัปเดต 2026-10-25