JFLAP - Finite State Automata

Steven Zeil

Last modified: Jul 29, 2016
Contents:
1 JFLAP

Abstract

JFLAP is a useful tool for visualizing and manipulating many kinds of automata that we will be discussing in this course.

Students should download the JFLAP tool and learn how to use its features for finite state automata.

1 JFLAP

JFLAP is a Java program that allows you to edit and manipulate a number of automata that we will be discussing in this course. JFLAP is free and will run on almost any PC with a reasonably up-to-date Java runtime environment.

JFLAP lets you create, edit, & view automata. It can simulate “running” an automaton on inputs that you supply. It can also demonstrate some of the manipulations and algorithms that we will learn to do on some automata.

JFLAP can be useful to you as a means of studying some of the automata discussed in your textbook. To facilitate this, I will offer links to many of the examples from the textbook that you can download and run.

If I ask you to create automata for an assignment, quiz, or exam, you will submit them for grading as a JFLAP file.

  1. Get JFLAP for your own use here. Get the version 7.0 release from May 2011.

    Once you have downloaded the JFLAP.jar file, you can run it on many operating systems by using your directory/file viewer to view the directory where you downloaded it and double-clicking on the file’s icon.

    If that does not work, you can run it from the command-line:

    java -jar path-to-where-you-placed-JFLAP.jar

  2. Read the Finite Automata section of the Tutorial, specifically the sections titled “Construct and Run”, “Manipulating Transitions”, and "“Add a Trap State to DFA”. You may want to skim the section on “Layout Commands”.

    Ignore, for now, any discussions of “nondeterministic” automata. The automata we are studying in this chapter are deterministic. We’ll discuss their nondeterministic cousins in a later chapter.

  3. Here is an FSA over the alphabet $\{0, 1\}$, the set of binary numbers. Given a non-empty input string, it accepts only states representing a binary number that is evenly divisible by 3.

    Try running this FSA on the inputs:

    Use the both the step and trace functions of JFLAP until you are comfortable with both.

  4. Exercise 2.2.5 in your text suggests drawing a number of FAs. Pick a few of them and create them in JFLAP. Run a handful of inputs through each one to convince yourself that you have done so correctly.