2012-01-14 41 views
17

Gần đây tôi đã tìm ra khoảng Kleene algebra để thao tác và đơn giản hóa các biểu thức chính quy.Đơn giản hóa biểu thức chính quy trong Mathematica

Tôi tự hỏi liệu điều này có được xây dựng trong bất kỳ chương trình phần mềm tính toán nào như Mathematica không? Nó sẽ là tuyệt vời để có một công cụ tính toán để làm công đoàn và nối của các biểu thức lớn và có máy tính đơn giản hóa chúng.

Nếu bạn không biết về bất kỳ chương trình nào có đại số này được xây dựng, bạn có biết bất kỳ chương trình nào cho phép mở rộng công cụ của họ bằng đại số mới không?

+1

Tài liệu toán học chứa hướng dẫn chi tiết về [Làm việc với các mẫu chuỗi] (http://reference.wolfram.com/mathematica/tutorial/WorkingWithStringPatterns.html). Nó có thể là một nơi tốt để bắt đầu. – kglr

+2

@kguler: Tất cả tài liệu tôi đã tìm thấy, bao gồm hướng dẫn đó, chỉ xem xét sử dụng cụm từ thông dụng cho mục đích kết hợp chuỗi và thao tác chuỗi cơ bản. –

+4

Bạn có thể thêm ví dụ về một vấn đề cụ thể mà bạn muốn giải quyết không? Nó có thể là một số ví dụ đồ chơi để minh họa các chức năng cần thiết. –

Trả lời

5

On http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf, nó khẳng định:

Một trong những kết quả cơ bản của lý thuyết automata hữu hạn là lý Kleene nổi tiếng, trong đó nêu rằng một ngôn ngữ được chấp nhận bởi một automaton hữu hạn khi và chỉ khi nó có thể được biểu diễn bằng cụm từ thông dụng .

Khó khăn chính của việc điều trị thuật toán thường xuyên biểu thức, tuy nhiên, đơn giản hóa của họ. Mặc dù một số thông tin về số được biết đến liên quan đến cụm từ thông dụng, ví dụ: các quy tắc của đại số Kleene, không tồn tại thuật toán hiệu quả cho việc giải quyết vấn đề đơn giản hóa biểu thức chính quy.

Dưới hoàn cảnh, cách duy nhất còn lại là phát triển thuật toán heuristic cho việc đơn giản hóa biểu thức thông thường. Đối với gói aut, bài báo này phác thảo các thủ tục Maple Rsimplify, Rabsorb và Rexpand.

Tôi tự hỏi liệu việc triển khai mã nguồn mở của thuật toán Đại số Kleene có tồn tại hay không.

+1

Tôi hiểu. Tôi nghĩ rằng có những hệ thống để đơn giản hóa tất cả các đại số, như Knuth – Bendix cho các nhóm, nhưng bây giờ rõ ràng là không có. Câu hỏi này: http://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions đàm phán về các hệ thống dựa trên quy tắc để đơn giản hóa số học tiêu chuẩn và bài báo này: http://alleystoughton.us/forlan/book-and -slides/slides-3.2-twoup.pdf cung cấp rất nhiều quy tắc tốt để bắt đầu. Tuy nhiên tôi vẫn tự hỏi liệu tôi có thực sự cần viết một hệ thống viết lại từ đầu hay không, hoặc có những thứ tôi có thể cắm vào. Có lẽ một số trong những Automated_theorem_prover của? .. –

Các vấn đề liên quan