সীমাবদ্ধ অটোমেটা কীভাবে নিয়মিত অভিব্যক্তিতে রূপান্তর করবেন?


115

নিয়মিত ভাবগুলি (ন্যূনতম) এনএফএতে রূপান্তর করা যা একই ভাষা স্বীকৃত হয় স্ট্যান্ডার্ড অ্যালগরিদমগুলির সাথে সহজ, যেমন থম্পসনের অ্যালগরিদম । অন্য দিকটি আরও ক্লান্তিকর বলে মনে হয়, যদিও এবং কখনও কখনও ফলাফলগুলি প্রকাশিত হয় না।

এনএফএকে নিয়মিত অভিব্যক্তিতে রূপান্তর করার জন্য কোন অ্যালগরিদম রয়েছে? সময়ের জটিলতা বা ফলাফলের আকার সম্পর্কে কি সুবিধা আছে?

এটি একটি রেফারেন্স প্রশ্ন হওয়ার কথা। দয়া করে আপনার পদ্ধতির একটি সাধারণ ডিক্রিপশন পাশাপাশি একটি তুচ্ছ তুচ্ছ উদাহরণ অন্তর্ভুক্ত করুন।


2
সিস্টিওরি.এসইতে একটি অনুরূপ প্রশ্ন নোট করুন যা সম্ভবত আমাদের দর্শকদের পক্ষে উপযুক্ত নয়।
রাফেল

সমস্ত উত্তর ডিএফএ থেকে আরই লিখতে আনুষ্ঠানিক কৌশল ব্যবহার করে। আমি বিশ্বাস করি বিশ্লেষণের মাধ্যমে আমার কৌশলটি তুলনামূলকভাবে সহজ এবং উদ্দেশ্যটি আমি আমার জবাব দিয়ে দেখিয়েছি: এই নির্বিচারক সসীম অটোমেটার ভাষা কী? আমি মনে করি এটি কোনও সময় সহায়ক হবে। হ্যাঁ, অবশ্যই আমি নিজেই কোনও সময় আনুষ্ঠানিক পদ্ধতি (আর্দেন উপপাদ্য) লিখি
आरই

উত্তর:


94

সীমাবদ্ধ অটোমেটা থেকে নিয়মিত অভিব্যক্তিতে রূপান্তরটি করতে বিভিন্ন পদ্ধতি রয়েছে। এখানে আমি স্কুলে সাধারণত পড়ানো একটি বর্ণনা করব যা খুব চাক্ষুষ। আমি বিশ্বাস করি এটি অনুশীলনে সর্বাধিক ব্যবহৃত হয়। যাইহোক, অ্যালগরিদম লেখা এত ভাল ধারণা নয়।

রাষ্ট্র অপসারণ পদ্ধতি

এই অ্যালগরিদমটি অটোমেটনের গ্রাফ পরিচালনা করার বিষয়ে এবং সুতরাং এটি আলগোরিদিমগুলির পক্ষে খুব উপযুক্ত নয় কারণ এটির জন্য ... রাষ্ট্র অপসারণের মতো গ্রাফের আদিম প্রয়োজন। আমি এটি উচ্চ স্তরের আদিম ব্যবহার করে বর্ণনা করব।

মূল ধারণা

ধারটি নিয়মিত বহিঃপ্রকাশগুলি বিবেচনা করা এবং এরপরে মধ্যবর্তী রাজ্যগুলি অপসারণ করার সময় ধারণাটি হ'ল।

মূল প্যাটার্নটি পরিসংখ্যানগুলিতে নিম্নলিখিতটিতে দেখা যাবে। প্রথমটিতে মধ্যে লেবেল রয়েছে যা নিয়মিত প্রকাশ হয় , এফ , জি , এইচ , আই এবং আমরা কিউ অপসারণ করতে চাই ।p,q,re,f,g,h,iq

pqr অটোমেটন

একবার মুছে ফেলা হলে আমরা একসাথে রচনা করি ( পি এবং আর এর মধ্যে অন্য প্রান্তগুলি সংরক্ষণ করার সময় কিন্তু এটি এতে প্রদর্শিত হয় না):e,f,g,h,ipr

এখানে চিত্র বর্ণনা লিখুন

উদাহরণ

রাফেলের উত্তরে একই উদাহরণ ব্যবহার করে :

২-৩-৩ অটোমেটন

আমরা ধারাবাহিকভাবে অপসারণ :q2

২-৩ অটোমেটন

q3

1 অটোমেটন

q1q1

(ab+(b+aa)(ba)(a+bb))

অ্যালগরিদম

L[i,j]qiqj

for i = 1 to n:
  for j = 1 to n:
    if i == j then:
      L[i,j] := ε
    else:
      L[i,j] := ∅
    for a in Σ:
      if trans(i, a, j):
        L[i,j] := L[i,j] + a

qk

remove(k):
  for i = 1 to n:
    for j = 1 to n:
      L[i,i] += L[i,k] . star(L[k,k]) . L[k,i]
      L[j,j] += L[j,k] . star(L[k,k]) . L[k,j]
      L[i,j] += L[i,k] . star(L[k,k]) . L[k,j]
      L[j,i] += L[j,k] . star(L[k,k]) . L[k,i]

star(ε)=εe.ε=e∅+e=e∅.e=∅εqiqkqjqk

এখন, কিভাবে ব্যবহার করবেন remove(k)? আপনার চূড়ান্ত বা প্রাথমিক অবস্থা হালকাভাবে মুছে ফেলা উচিত নয়, অন্যথায় আপনি ভাষার কিছু অংশ মিস করবেন।

for i = 1 to n:
  if not(final(i)) and not(initial(i)):
    remove(i)

আপনার যদি কেবলমাত্র একটি চূড়ান্ত রাষ্ট্রীয় এবং একটি প্রাথমিক রাষ্ট্রের তবে চূড়ান্ত হ'ল:qfqs

e := star(L[s,s]) . L[s,f] . star(L[f,s] . star(L[s,s]) . L[s,f] + L[f,f])

আপনার যদি বেশ কয়েকটি চূড়ান্ত রাজ্য (বা এমনকি প্রাথমিক অবস্থাগুলি) থাকে তবে ট্রানজিটিভ ক্লোজার পদ্ধতি প্রয়োগ করা ব্যতীত এগুলি মার্জ করার কোনও সহজ উপায় নেই। সাধারণত এটি হাত দ্বারা কোনও সমস্যা হয় না তবে অ্যালগরিদম লেখার সময় এটি বিশ্রী হয়। অনেক বেশী সাদাসিধে কার্যসংক্রান্ত সবকিছুর যুগল গনা হয় এবং (ইতিমধ্যে রাষ্ট্রীয় সরানো হয়েছে) গ্রাফে অ্যালগরিদম সব এক্সপ্রেশন পেতে চালানোর ত শুধুমাত্র প্রাথমিক অবস্থায় নেই এবং শুধুমাত্র চূড়ান্ত রাষ্ট্র, তাহলে সব ইউনিয়ন করছেন ।(s,f)es,fsfes,f

এটি এবং এটি সত্য যে এটি প্রথম পদ্ধতির তুলনায় ভাষাগুলিকে আরও গতিময়ভাবে সংশোধন করছে যা প্রোগ্রামিংয়ের সময় এটিকে আরও ত্রুটি-প্রবণ করে তোলে। আমি অন্য কোনও পদ্ধতি ব্যবহার করার পরামর্শ দিচ্ছি।

কনস

এই অ্যালগরিদমে অনেকগুলি কেস রয়েছে, উদাহরণস্বরূপ, কোন নোডটি আমাদের অপসারণ করা উচিত তা বেছে নেওয়ার জন্য, শেষে চূড়ান্ত রাজ্যের সংখ্যা, একটি চূড়ান্ত রাষ্ট্র প্রাথমিকও হতে পারে তা সত্য ইত্যাদি etc.

মনে রাখবেন যে এখন অ্যালগরিদমটি লেখা হয়েছে, এটি অনেকটা ট্রানজিটিভ ক্লোজার পদ্ধতির মতো। শুধুমাত্র ব্যবহারের প্রসঙ্গটি ভিন্ন। আমি অ্যালগরিদম বাস্তবায়নের পরামর্শ দিচ্ছি না, তবে হাত দ্বারা এটি করার জন্য পদ্ধতিটি ব্যবহার করা ভাল ধারণা।


1
উদাহরণস্বরূপ, ২ য় চিত্র, নোড "2" অপসারণের পরে, একটি প্রান্ত অনুপস্থিত - নোড এ এ লুপ প্রান্ত (আব)
প্যানোস কাল।

@ কাবারামারু: স্থির। তবে এখন আমি মনে করি তৃতীয় চিত্রের হওয়া উচিত এবং একইভাবে সম্ভবত চূড়ান্ত নিয়মিত প্রকাশে। εab
বেড়ানো

আপনি একটি নতুন প্রাথমিক এবং একটি নতুন চূড়ান্ত রাষ্ট্রীয় adding যুক্ত করে এবং এগুলিকে ওয়ারেপসিলন-বাজেটের মাধ্যমে মূল প্রাথমিক এবং চূড়ান্ত অবস্থার সাথে সংযুক্ত করে যে কোনও সংখ্যক প্রাথমিক এবং চূড়ান্ত অবস্থার জন্য অ্যালগোরিদম কাজ করতে পারেন । এখন সমস্ত মূল অবস্থা মুছে ফেলুন । এক্সপ্রেশনটি তখন থেকে থেকে একক অবশিষ্ট প্রান্তে পাওয়া যায় । বা এ লুপ দেবে না কারণ এই রাজ্যগুলিতে । বহির্গামী প্রান্ত বা যদি আপনি কঠোর হন তবে তাদের ফাঁকা সেট উপস্থাপন করে এমন লেবেল থাকবে। q+qεq+qq+q
হেনড্রিক জানুয়ারী

1
দ্বিতীয় উদাহরণটিতে এখনও একটি সমস্যা রয়েছে: সরলকরণের আগে অটোমাতা "বা" গ্রহণ করে (1, 3, 1) তবে সরলকরণের পরে তা হয় না।
wvxvw

50

পদ্ধতি

আমি যে সর্বোত্তম পদ্ধতিটি দেখেছি তা হ'ল অটোমেটনকে (নিয়মিত) ভাষার সমীকরণ সিস্টেম হিসাবে প্রকাশ করে যা সমাধান করা যায়। এটি বিশেষত দুর্দান্ত কারণ এটি অন্যান্য পদ্ধতির তুলনায় আরও সংক্ষিপ্ত ভাব প্রকাশ করে বলে মনে হচ্ছে।

যাক ছাড়া একটি NFA -transitions। প্রতিটি রাজ্যের জন্য সমীকরণ তৈরি করুনA=(Q,Σ,δ,q0,F)εqi

Qi=qiaqjaQj{{ε}, qiF, else

যেখানে হল চূড়ান্ত রাজ্যের সেট এবং অর্থ হল থেকে লেবেলযুক্ত দিয়ে । যদি আপনি হিসাবে বা (আপনার নিয়মিত প্রকাশের সংজ্ঞা অনুসারে) পড়ে থাকেন তবে আপনি দেখতে পাচ্ছেন যে এটি নিয়মিত প্রকাশের সমীকরণ।Fqiaqjqiqja+

সিস্টেমটি সমাধানের জন্য আপনার এবং (স্ট্রিং কনটেনটেশন), এবং আর্দেনের লেমা comm এর যোগাযোগের প্রয়োজন এবং সংযুক্তি এবং বিতরণ দরকার :

যাক সঙ্গে নিয়মিত ভাষায় । তারপর,L,U,VΣεU

L=ULVL=UV

সমাধান রেগুলার এক্সপ্রেশনের একটি সেট , যে রাষ্ট্রের জন্য এক । ঠিক এই কথাগুলো যে গ্রহণ করা যেতে পারে বর্ণনা করে যখন শুরু ; সুতরাং (যদি প্রাথমিক অবস্থা হয়) হ'ল কাঙ্ক্ষিত অভিব্যক্তি।QiqiQiAqiQ0q0


উদাহরণ

স্বচ্ছতার স্বার্থে, আমরা তাদের উপাদান অর্থাত দ্বারা Singleton সেট denotate । উদাহরণটি হল জর্জি জেটস্কের কারণে।a={a}

এই এনএফএ বিবেচনা করুন:

উদাহরণ এনএফএ
[ উত্স ]

সংশ্লিষ্ট সমীকরণ সিস্টেমটি হ'ল:

Q0=aQ1bQ2εQ1=bQ0aQ2Q2=aQ0bQ1

এখন দ্বিতীয়টিতে তৃতীয় সমীকরণটি প্লাগ করুন:

Q1=bQ0a(aQ0bQ1)=abQ1(baa)Q0=(ab)(baa)Q0

শেষ পদক্ষেপের জন্য, আমরা , এবং । নোট করুন যে তিনটি ভাষাই নিয়মিত এবং are , যা আমাদের লেমা প্রয়োগ করতে সক্ষম করে। এখন আমরা এই ফলাফলটি প্রথম সমীকরণে প্লাগ করি:L=Q1U=abV=(baa)Q0εU={ab}

Q0=a(ab)(baa)Q0baQ0bb(ab)(baa)Q0ε=((abb)(ab)(baa)ba)Q0ε=((abb)(ab)(baa)ba)(by Arden's Lemma)

সুতরাং, আমরা উপরের অটোমেটনের দ্বারা গৃহীত ভাষার জন্য একটি নিয়মিত প্রকাশ পেয়েছি, যথা

((a+bb)(ab)(b+aa)+ba).

দ্রষ্টব্য যে এটি বেশ সংক্ষিপ্ত (অন্য পদ্ধতির ফলাফলের সাথে তুলনা) তবে অনন্যভাবে নির্ধারিত নয়; ম্যানিপুলেশনগুলির একটি পৃথক ক্রম সহ সমীকরণ সিস্টেমটি সমাধান করা অন্যান্য - সমতুল্য! - এক্সপ্রেশন।


  1. আরডেনের লেমা প্রমাণের জন্য, এখানে দেখুন

1
এই অ্যালগরিদমের সময় জটিলতা কী? উত্পাদিত অভিব্যক্তির আকারের কি কোনও আবদ্ধ আছে?
jmite

@ জমিট: আমার কোনও ধারণা নেই। আমি মনে করি না যে আমি এটি প্রয়োগ করার চেষ্টা করব (অন্যান্য পদ্ধতিগুলি এ ক্ষেত্রে আরও কার্যকর বলে মনে হচ্ছে) তবে এটি কলম এবং কাগজের পদ্ধতি হিসাবে ব্যবহার করুন।
রাফেল

1
এই অ্যালগরিদমের একটি প্রোলোগ বাস্তবায়ন এখানে দেওয়া হয়েছে: github.com/wvxvw/intro-to-automata-theory/blob/master/automata/… তবে এর প্রাকটিকmaybe_union/2 আরও পরিশ্রম ব্যবহার করতে পারে (esp। সাধারণ উপসর্গটি মুছে ফেলা) পরিপাটি নিয়মিত প্রকাশ করতে পারে। এই পদ্ধতিটি দেখার আরেকটি উপায় হ'ল এটিকে রেজিক্স থেকে ডান-লিনিয়ার ব্যাকরণ হিসাবে অনুবাদ হিসাবে বোঝা যায়, যেখানে প্রোলোগের মতো একীকরণ বা এমএল-জাতীয় প্যাটার্নের মিলগুলির সাথে ভাষাগুলি খুব ভাল ট্রান্সডুসারদের জন্য তৈরি করে, তাই এটি কেবল একটি কলম এবং কাগজই নয় not অ্যালগরিদম :)
wvxvw

শুধু একটা প্রশ্ন. প্রথম সমীকরণের ε হ'ল কারণ কিউ একটি সূচনা রাষ্ট্র বা কারণ এটি একটি চূড়ান্ত রাষ্ট্র? একই পদ্ধতিতে যদি আমার দুটি চূড়ান্ত রাষ্ট্র প্রয়োগ হয়?
জর্জিও 3

@ উপরে এর সংজ্ঞাটি পরীক্ষা করুন (লাইন); এটি কারণ একটি চূড়ান্ত রাষ্ট্র। Qiq0
রাফেল

28

ব্রজোজোস্কি বীজগণিত পদ্ধতি method

এটি রাফেলের উত্তরে বর্ণিত মত একই পদ্ধতি , তবে পদ্ধতিগত অ্যালগরিদমের দৃষ্টিকোণ থেকে এবং তারপরে সত্যই, অ্যালগরিদম। আপনি কোথায় শুরু করবেন তা জানার পরে এটি কার্যকর করা সহজ এবং প্রাকৃতিক হয়ে গেছে। এছাড়াও যদি অটোমেটা আঁকানো কোনও কারণে অকারণে কার্যকর হয় তবে হাতে হাতে সহজ হতে পারে।

অ্যালগরিদম লেখার সময় আপনাকে অবশ্যই মনে রাখতে হবে যে সমীকরণগুলি সর্বদা রৈখিক হতে হবে যাতে আপনার সমীকরণগুলির একটি ভাল বিমূর্ত উপস্থাপনা থাকে, যা আপনি হাত দিয়ে সমাধান করার সময় ভুলে যেতে পারেন।

আলগোরিদিম ধারণা

আমি কীভাবে এটি কাজ করব তা বর্ণনা করব না কারণ এটি রাফেলের উত্তরে ভালভাবে সম্পন্ন হয়েছে যা আমি আগে পড়ার পরামর্শ দিই। পরিবর্তে, আমি অতিরিক্ত ক্রিয়াকলাপ বা অতিরিক্ত কেস না করে আপনার কোন সমীকরণটি সমাধান করা উচিত সেটির দিকে আমি ফোকাস করি।

আরডেনের নিয়মের সমাধান থেকে শুরু করে ভাষা সমীকরণের আমরা স্বয়ংক্রিয়টিকে ফর্মের সমীকরণের একটি সেট হিসাবে বিবেচনা করতে পারি:X=ABX=AXB

Xi=Bi+Ai,1X1++Ai,nXn

আমরা সেই অনুযায়ী অ্যারে এবং আপডেট করে মাধ্যমে সমাধান করতে পারি । পদক্ষেপে , আমাদের আছে:nAi,jBi,jn

Xn=Bn+An,1X1++An,nXn

এবং আর্দেনের শাসন আমাদের দেয়:

Xn=An,n(Bn+An,1X1++An,n1Xn1)

এবং এবং আমরা পেয়েছি:Bn=An,nBnAn,i=An,nAn,i

Xn=Bn+An,1X1++An,n1Xn1

এবং আমরা তারপরে জন্য, সেটিংস স্থাপন করে সিস্টেমে সমস্ত প্রয়োজনীয়তা সরিয়ে ফেলতে পারি :Xni,j<n

Bi=Bi+Ai,nBn
Ai,j=Ai,j+Ai,nAn,j

আমরা যখন যখন সমাধান করেছি তখন আমরা এই জাতীয় সমীকরণ পাই:Xnn=1

X1=B1

সঙ্গে । এইভাবে আমরা আমাদের নিয়মিত প্রকাশ পেয়েছি।A1,i

অ্যালগরিদম

এটি ধন্যবাদ, আমরা অ্যালগরিদম তৈরি করতে পারেন। উপরের অন্তর্ভুক্তির চেয়ে একই কনভেনশন করার জন্য, আমরা বলব যে প্রারম্ভিক অবস্থাটি এবং রাজ্যের সংখ্যা । প্রথমত, পূরণের সূচনা :q1mB

for i = 1 to m:
  if final(i):
    B[i] := ε
  else:
    B[i] := ∅

এবং :A

for i = 1 to m:
  for j = 1 to m:
    for a in Σ:
      if trans(i, a, j):
        A[i,j] := a
      else:
        A[i,j] := ∅

এবং তারপরে সমাধান:

for n = m decreasing to 1:
  B[n] := star(A[n,n]) . B[n]
  for j = 1 to n:
    A[n,j] := star(A[n,n]) . A[n,j];
  for i = 1 to n:
    B[i] += A[i,n] . B[n]
    for j = 1 to n:
      A[i,j] += A[i,n] . A[n,j]

চূড়ান্ত এক্সপ্রেশনটি হ'ল:

e := B[1]

বাস্তবায়ন

এমনকি যদি এটি এমন একটি সমীকরণের সিস্টেম বলে মনে হয় যা অ্যালগোরিদমের পক্ষে খুব প্রতীকী বলে মনে হয় তবে এটি একটি বাস্তবায়নের জন্য উপযুক্ত suited এখানে ওক্যামল (ভাঙা লিঙ্ক) এ এই অ্যালগরিদমের একটি বাস্তবায়ন রয়েছে । মনে রাখবেন যে ফাংশনটি বাদে brzozowskiসবকিছুই প্রিন্ট করা বা রাফেলের উদাহরণ হিসাবে ব্যবহার করা। নোট করুন যে নিয়মিত প্রকাশের সরলীকরণের জন্য আশ্চর্যজনকভাবে কার্যকর কার্য রয়েছে simple_re


4
লিঙ্কটি মারা গেছে ...
কলম্বো

জাভাস্ক্রিপ্টে বাস্তবায়ন: github.com/devongovett/regexgen/blob/master/src/regex.js
cakraww

24

ট্রানজিটিভ ক্লোজার পদ্ধতি

এই পদ্ধতিটি অ্যালগরিদমের আকারে লিখতে সহজ তবে অযৌক্তিকভাবে বড় নিয়মিত ভাব প্রকাশ করে এবং আপনি যদি হাতের সাহায্যে এটি ব্যবহার করেন তবে অবাস্তব হয়, বেশিরভাগ কারণ এটি খুব পদ্ধতিগত। যদিও এটি একটি অ্যালগরিদমের জন্য একটি ভাল এবং সাধারণ সমাধান।

মূল ধারণা

যাক স্ট্রিং জন্য রেগুলার এক্সপ্রেশন থেকে যাচ্ছে প্রতিনিধিত্ব করার রাজ্যের ব্যবহার । যাক যন্ত্রমানব রাজ্যের সংখ্যা হতে হবে।Ri,jkqiqj{q1,,qk}n

মনে করুন যে আপনি ইতিমধ্যে মধ্যবর্তী অবস্থার ( ব্যতীত) থেকে পর্যন্ত থেকে নিয়মিত অভিব্যক্তি , সমস্ত । তারপরে আপনি অনুমান করতে পারেন যে অন্য একটি রাজ্য যুক্ত করা কীভাবে নতুন নিয়মিত অভিব্যক্তি affect কে প্রভাবিত করবে : এটি কেবলমাত্র আপনার তে সরাসরি স্থানান্তরিত পরিবর্তিত হয় এবং এটি এর মত প্রকাশ করা যেতে পারে:Ri,jqiqjqki,jRi,jqk

Ri,j=Ri,j+Ri,k.Rk,k.Rk,j

( আর এবং হ'ল ।)RRk1RRk

উদাহরণ

আমরা রাফেলের উত্তরের মতো একই উদাহরণ ব্যবহার করব । প্রথমদিকে, আপনি কেবল প্রত্যক্ষ রূপান্তরগুলিই ব্যবহার করতে পারেন।

এখানে প্রথম পদক্ষেপ (নোট যে একটি লেবেল সঙ্গে একটি স্ব লুপ প্রথম রুপান্তরিত হবে মধ্যে ।aε(ε+a)

R0=[εabbεaabε]

দ্বিতীয় ধাপে আমরা ব্যবহার করতে (যা আমাদের জন্য রূপান্তরিত হয়েছে , কারণ উপরের উদ্দেশ্যে ইতিমধ্যে ব্যবহৃত হয়েছে)। আমরা দেখব কীভাবে । কাজ করে।q0q1R0R1

থেকে করার : ।q2q2R2,21=R2,20+R2,10R1,10R1,20=ε+bεa=ε+ba

তা কেন? এর কারণ হল থেকে যাচ্ছে করার ব্যবহার করে শুধুমাত্র যেমন কোন মধ্যবর্তী রাষ্ট্র এখানে স্থিত (দ্বারা করা সম্ভব ) অথবা যাচ্ছে ( (), সেখানে লুপিং ) এবং ফিরে আসার ( )।q2q2q1εq1aεb

R1=[εabbε+baa+bbab+aaε+ab]

আপনি এবং গণনা করতে পারেন এবং আপনাকে চূড়ান্ত প্রকাশ দেবে কারণ প্রাথমিক এবং চূড়ান্ত উভয়ই। নোট করুন যে এখানে প্রকাশের অনেক সরলকরণ হয়েছে। তা না হলে প্রথম এর হবে এবং প্রথম এর হবে ।R2R3R1,131aR0(+a)aR1((+a)+ε(ε)a)

অ্যালগরিদম

আরম্ভ:

for i = 1 to n:
  for j = 1 to n:
    if i == j:
      R[i,j,0] := ε
    else:
      R[i,j,0] := ∅
    for a in Σ:
      if trans(i, a, j):
        R[i,j,0] := R[i,j,0] + a

ক্রমবর্ধমান বন্ধ:

for k = 1 to n:
  for i = 1 to n:
    for j = 1 to n:
      R[i,j,k] := R[i,j,k-1] + R[i,k,k-1] . star(R[k,k,k-1]) . R(k,j,k-1)

তারপরে চূড়ান্ত হল ( প্রাথমিক অবস্থা):qs

e := ∅
for i = 1 to n:
  if final(i):
    e := e + R[s,i,n]

তবে আপনি কল্পনা করতে পারেন এটি কুরুচিপূর্ণ নিয়মিত প্রকাশ করে। তুমি তো ভালো জিনিস আশা করতে পারেন যে একই ভাষা প্রতিনিধিত্ব করে । নোট করুন যে একটি নিয়মিত এক্সপ্রেশন সরলকরণ অনুশীলনে দরকারী।একটি একটি()+(a+())(ε)(a+)aa

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.