A Double Conversion: Regular Grammar to NFA to Regex!

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ก.ย. 2024
  • Here we look at a (rare) double conversion, which is converting from a regular grammar to an NFA (nondeterministic finite automaton) to a regular expression (regex). This comes from a 2017 exam question of mine. I walk through the steps in both of the conversions of how to perform them.
    For the regular grammar to NFA conversion, make a state for each of the variables of the NFA, as well as a single final state. Then, for each rule that produces a variable, go to that variable with the produced character (or on epsilon if none produced). If a rules makes epsilon or a character, go to the new final state on that character.
    For the NFA to regex conversion, I walk through this process in this video: • NFA to Regular Express...
    Patreon: / easytheory
    Twitch: / easytheory
    Mixer: mixer.com/easy...
    Discord: / discord
    Facebook: / easytheory
    Twitter: / easytheory
    Teespring: teespring.com/...
    If you like this content, please consider subscribing to my channel: / @easytheory
    ▶ADDITIONAL QUESTIONS◀
    1. What is the maximum length of a regex that comes from the NFA to regex process? What about for this specific NFA?
    2. Will the regex that comes out of the conversion look the same if we ripped out different states? When is it the case that they are identically the same?
    ▶SEND ME THEORY QUESTIONS◀
    ryan.e.dougherty@icloud.com
    ▶ABOUT ME◀
    I am a professor of Computer Science, and am passionate about CS theory. I have taught over 12 courses at Arizona State University, as well as Colgate University, including several sections of undergraduate theory.
    ▶ABOUT THIS CHANNEL◀
    The theory of computation is perhaps the fundamental theory of computer science. It sets out to define, mathematically, what exactly computation is, what is feasible to solve using a computer, and also what is not possible to solve using a computer. The main objective is to define a computer mathematically, without the reliance on real-world computers, hardware or software, or the plethora of programming languages we have in use today. The notion of a Turing machine serves this purpose and defines what we believe is the crux of all computable functions.
    This channel is also about weaker forms of computation, concentrating on two classes: regular languages and context-free languages. These two models help understand what we can do with restricted means of computation, and offer a rich theory using which you can hone your mathematical skills in reasoning with simple machines and the languages they define.
    However, they are not simply there as a weak form of computation--the most attractive aspect of them is that problems formulated on them are tractable, i.e. we can build efficient algorithms to reason with objects such as finite automata, context-free grammars and pushdown automata. For example, we can model a piece of hardware (a circuit) as a finite-state system and solve whether the circuit satisfies a property (like whether it performs addition of 16-bit registers correctly). We can model the syntax of a programming language using a grammar, and build algorithms that check if a string parses according to this grammar.
    On the other hand, most problems that ask properties about Turing machines
    are undecidable. This TH-cam channel will help you see and prove that several tasks involving Turing machines are unsolvable---i.e., no computer, no software, can solve it. For example, you will see that there is no software that can check whether a
    C program will halt on a particular input. To prove something is possible is, of course, challenging. But to show something is impossible is rare in computer
    science, and very humbling.

ความคิดเห็น • 14

  • @EasyTheory
    @EasyTheory  4 ปีที่แล้ว

    Next video! The p factorial trick: th-cam.com/video/neQxf_nYqCs/w-d-xo.html

  • @alanchang3577
    @alanchang3577 11 หลายเดือนก่อน +1

    I love your videos, they're super engaging and nicely explained!

  • @CLG111
    @CLG111 ปีที่แล้ว +2

    The actual test questions are very good. You should include more of these questions. This actually makes sense. If only the Theory of Computation book were written like this.

  • @30benasabu65
    @30benasabu65 ปีที่แล้ว

    sir i diidnt understant why we made a new final state f, and why the 3 states cant be a final state

  • @chauto1487
    @chauto1487 5 หลายเดือนก่อน

    you make my life way more easier than reading the textbook. Thank you for sharing your knowledge.

  • @yashsinghal1023
    @yashsinghal1023 4 ปีที่แล้ว +2

    Thats a great Video Sir

    • @EasyTheory
      @EasyTheory  4 ปีที่แล้ว +1

      Thanks (and for the support as always)!

  • @honeymilongton8401
    @honeymilongton8401 4 ปีที่แล้ว +1

    thanks for making the video sir plz make some videos

    • @EasyTheory
      @EasyTheory  4 ปีที่แล้ว

      Thanks! Which ones?

    • @akshatsaxena6404
      @akshatsaxena6404 3 ปีที่แล้ว

      @@EasyTheory Simplification of regex? (Much needed video)

    • @EasyTheory
      @EasyTheory  3 ปีที่แล้ว

      @@akshatsaxena6404 I've seen some things for simplification, but there isn't a known "fast" algorithm for minimizing regexes.

  • @tinnokkwok8510
    @tinnokkwok8510 ปีที่แล้ว

    I love this intro sound the most.

  • @kapteinkonyn3450
    @kapteinkonyn3450 3 ปีที่แล้ว

    Excellent stuff!

  • @Yeeezy
    @Yeeezy 3 ปีที่แล้ว

    Thank you!