Giter VIP home page Giter VIP logo

automathon's Issues

Add new algorithms

Add the following algorithms:

DFA:

  • intersection
  • difference
  • symmetric_difference

NFA:

  • intersection

Make use of dataclasses

Refactor DFA and NFA definition to make use of dataclasses, replace __init__ with dataclasses.

Refac this...

def __init__(self, name: str, unit_price: float, quantity_on_hand: int = 0):
    self.name = name
    self.unit_price = unit_price
    self.quantity_on_hand = quantity_on_hand

to this...

from dataclasses import dataclass

@dataclass
class InventoryItem:
    """Class for keeping track of an item in inventory."""
    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -> float:
        return self.unit_price * self.quantity_on_hand

[graphviz] Please enable graphviz customization interface or options tweaking resulting graph

I've used the tool to generate a cartesian product of 3 finite automata, but the resulting graph is huge and when I try to view the picture, it becomes problematic to understand what is happening because the font is very small and the graph nodes themselves are too huge. It would be great if we had the option to select those graph parameters, or even better, introduce some python graphviz interface to be able to configure the graph plot settings to our preferences.

Consider update NFA definition

According to the formal definition of the NFA that is mentioned in the book Automata and Computability, the NFA contains multiple start states instead of one single initial state as is defined here in the library.

To maintain the formal equality, it is important to consider this as a refactor of the NFA definition.

Create a docs website

Explore the different options to create a docs website with all the information about this library

Update doc

Update documentation with the new methods

Incorrect removal of epsilon transitions

Hi,

Thanks for the library!

I generate an NFA with the following data and attempt to remove epsilon transitions.

The result is incorrect: in the produced DFA, it becomes possible to jump from A to D without passing through B and C.

image

Another issue I've found is that if there are two mirroring epsilon transitions, i.e. from 1 to 2 and from 2 to 1, attempting to remove epsilon transitions breaks with a max recursion error.

Any idea what's happening? If need be I could potentially help with a fix!

Thanks

Update documentation

Considering some of the changes that were made during the code refactoring, it is necessary to update the documentation

Allow states to be any immutable object (not just strings)

Thanks for your library that I have used to illustrate an article about DFA (see here)!

I actually wanted to use integers to define the states and I found that this is not possible (it fails when calling automata.view(...)), is there any specific reason for this restriction?

It seems that any hashable object could be a state and the graphviz representation could just use str().

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.