پذیرنده متناهی معین
در نظریه اتوماتا، شاخه‌ای از علوم کامپیوتر نظری، ماشین‌های تعیین‌پذیر حالات متناهی (Deterministic finite-state machine) به آن دسته از ماشین‌های حالات متناهی اطلاق می‌شود که رشته متناهی از سمبل‌ها را می‌پذیرد یا رد می‌کند و برای هر رشته ورودی تنها محاسباتی یکتا از ماشین اتوماتا را تولید می‌کند. در واقع 'تعیین‌پذیری' در این ماشین‌ها به یکتایی محاسبات برمی‌گردد. در جستجوی ساده‌ترین روش‌ها برای نمایش ماشین‌های حالت متناهی، مک‌کالک (McCulloch) و پیتس (Pitts) در میان اولین محققانی بودند که مفاهیم و ایده‌هایی شبیه به ماشین‌های اتوماتای محدود را در سال ۱۹۴۳ معرفی کردند.
شکل سمت چپ، یک ماشین تعین‌پذیر حالات متناهی را با استفاده از نمودار حالت‌ها نشان می‌دهد. در این ماشین اتوماتا، سه حالت "S"، "S" و "S" وجود دارند (که در تصویر با دایره نشان داده شده‌اند). ماشین اتوماتا دنباله‌ای از ۰ها و ۱ها را به عنوان ورودی دریافت می‌کند. برای هر حالت، به ازای هر یک از ۰ و ۱، یک بردار انتقال موجود است که به حالت بعد راهنمایی می‌کند. تا زمانی که یک نماد را می‌خوانیم، یک DFA "به صورت تعیین پذیر و قطعی" با دنبال کردن بردارهای انتقال از حالتی به حالت دیگر حرکت می‌کند. برای مثال، اگر ماشین اتوماتا در حالت "S" قرار دارد و نماد ورودی نیز ۱ است، به صورت قطعی به حالت "S" خواهد رفت. یک DFA دارای یک حالت آغازین است (با فلشی که از هیچ کجا به آن وارد می‌شود، نشان داده می‌شود) که محاسبات در آن آغاز می‌شوند، و یک مجموعه از حالات نهایی (با دایره دوخطه نشان داده می‌شوند) که کمک می‌کند زمانی را که محاسبات موفق شده‌است را تعریف کنیم. یک DFA به عنوان یک مفهوم ریاضی مطلق تعریف شده‌است، اما با توجه به ذات نعیین‌پذیر DFA، قابل پیاده‌سازی در سخت‌افزار و نرم‌افزار برای حل مسائلی خاص و مختلف است. برای مثال یک DFA می‌تواند یک نرم‌افزار را که تصمیم می‌گیرد که آیا ورودی کاربر (برای مثال) یک آدرس ایمیل معتبر است یا نه، مدل کند. DFAها دقیقاً مجموعه زبان‌های منظم را که، به غیر از موارد دیگر، برای انجام آنالیزهای واژگانی و تطبیق‌های الگویی مفید هستند، می‌پذیرند. همچنین DFAها می‌توانند از طریق ساخت مجموعه توانی از ماشین‌های تعین‌ناپذیر حالات متناهی ساخته شوند.
اتوماتون تعیین‌پذیر متناهی (Deterministic Finite Automaton - DFA) به یک پنج‌تائی formula_1 گفته می‌شود، که شامل: می‌باشد. فرض کنید "w = aa … a" رشته‌ای از الفبای formula_3 باشد. در این صورت رشته w توسط اتوماتون M پذیرفته می‌شود، اگر دنباله‌ای از حالات "r,r, … , r" در Q با شرایط زیر وجود داشته باشند: به عبارت دیگر، شرط اول بیان می‌کند که ماشین با همان حالت آغازین "q" شروع به محاسبه کند. شرط دوم بیان می‌کند که بر اساس هر یک از کاراکترهای رشته w داده شده، ماشین از حالتی به حالت دیگر طبق تابع انتقال δ انتقال خواهد یافت؛ و شرط آخر بیان می‌کند که ماشین w را می‌پذیرد، اگر آخرین ورودی w باعث توقف ماشین در یکی از حالات پایانی شود. در غیر این صورت، گفته می‌شود که اتوماتون رشته را رد کرده‌است. مجموعه همه رشته‌هایی که M می‌پذیرد، زبانیست که در M صدق می‌کند و این زبان با (L(M نشان داده می‌شود. ماشین تعین‌پذیر متناهی که حالت پایانی و آغازین ندارد به عنوان سیستم انتقال یا شبه‌اتوماتون شناخته می‌شود. برای آشنایی بیشتر با تعریف رسمی نظریه اتوماتا را ببینید.
مثال زیر، DFAی M با الفبای باینری است که ورودی‌هایی را که شامل تعداد زوجی ۰ هستند را می‌پذیرد.
("M" = ("Q", Σ, δ, "q", "F" که حالت "S" نشان‌دهنده این است که تاکنون تعداد زوجی ۰ در ورودی بوده است. در حالی که "S" حاکی از تعداد فردی ۰ است. یک ۱ در ورودی حالت اتوماتون را تغییر نمی‌دهد. زمانی که ورودی پایان یابد، حالت اتوماتون نشان‌دهنده آن خواهد بود که آیا ورودی دارای تعداد زوجی ۰ است یا نه. اگر ورودی شامل تعداد زوجی ۰ باشد، M در حالت "S" که حالتی پایانی است، پایان خواهد یافت و بنابراین رشته ورودی پذیرفته خواهد شد. زبانی که در M صدق می‌کند یک "زبان منظم" است که با عبارت منظم *((*۱)۰(*۱)۰)*۱ نشان داده می‌شود. "*" همان "ستاره کلینی" است؛ برای مثال *۱ نشان‌دهنده هر تعداد نامنفی (شاید صفر عدد) از نماد ۱ است.
اگر زبانِ DFAی حاصل از اعمال عملیاتی بر DFAها قبل تشخیص با یک DFA باشد، گفته می‌شود که DFAها تحت آن عملیات بسته هستند. DFAها تحت عملیات زیر بسته هستند: ازآن‌جایی‌که DFAها هم‌ارز با ماشین‌های تعیین‌ناپذیر متناهی NFA هستند، ویژگی‌های بستاری بالا با استفاده از ویژگی‌های بستاری NFA‌ها اثبات می‌شوند.
یک DFA که نماینده یک زبان منظم است، می‌تواند هم به عنوان پذیرنده، برای تصدیق عضویت یک رشته ورودی در زبان، و هم به عنوان تولیدکننده، برای تولید لیستی از رشته‌های زبان، استفاده شود. در حالت پذیرنده، یک رشته ورودی فراهم شده است که اتوماتون می‌تواند آن را از چپ به راست، و هر بار یک نماد را بخواند. محاسبات از حالت آغازین شروع شده و با خواندن اولین نماد از رشته ورودی و دنبال کردن انتقال حالات طبق نمادها پیش می‌رود. سیستم به خواندن نمادها و دنبال کردن انتقال‌ها تا زمانی که دیگر هیچ نمادی در ورودی باقی نمانده باشد، که نشان‌دهنده پایان محاسبات است، ادامه می‌دهد. اگر پس از پایان یافتن پردازش همه نمادهای ورودی، سیستم در حالت پایانی باشد، خواهیم دانست که که رشته ورودی در واقع جزئی از زبان است، و گفته می‌شود که "پذیرفته" شده است؛ درغیراین‌صورت جزئی از زبان نبوده و پذیرفته نشده است. حالت تولیدکننده هم شبیه است؛ به غیر از این که علاوه‌بر تعیین اعتبار یک رشته ورودی، هدف آن تعین همه رشته‌های موجود در زبان است. به جای دنبال کردن "یک" انتقالِ خروجی از هر حالت، همه آن‌ها را دنبال می‌کند؛ و در عمل این با یک سری عملیات موازی سنگین (داشتن یک برنامه که هر بار با تصمیم‌گیری مواجه می‌شود به دو یا بیشتر پردازه انشعاب می‌یابد) یا از طریق محاسبات بازگشتی به انجام می‌رسد. مانند قبل، محاسبات از حالت آغازین شروع شده و سپس با دنبال کردن هر یک از انتقال‌های دردسترس پیش می‌رود، با آگاهی از این که کدام یک از شاخه‌ها انتخاب شده است. هر بار که اتوماتون خودش را در حالت پایانی بیابد، درمی‌یابد که دنباله‌ای از شاخه‌هایی که انتخاب شده است، یک رشته مورد قبول از زبان را تشکیل می‌دهد و آن رشته را به لیستی که در حال "تولید" آن است، اضافه می‌کند. اگر زبانی که این اتوماتون شرح می‌دهد، نامتناهی باشد (یعنی شامل تعداد نامتناهی از اعداد یا رشته‌ها باشد، مثلاً همه رشته‌های دودویی با تعداد زوجی صفر)؛ محاسبات هرگز متوقف نخواهد شد. مسلم است که زبان‌های منظم، به‌طورکلی، نامتناهی هستند، اتوماتا در حالت "تولیدکننده" گرایش بیشتر به ساخت نظری دارد.
بعلاوه، یک اجرا (run) می‌تواند به عنوان یک دنباله از ترکیب توابع انتقال با خودشان دیده شود. نماد ورودی formula_8 داده شده است، امکان دارد شخصی تابع انتقال را به صورت formula_9، با استفاده حیله ساده "currying" بنویسد که به صورت formula_10 برای هر formula_11 نوشته می‌شود. بدین صورت، تابع انتقال می‌تواند به صورت ساده‌تری دیده بشود: این تنها چیزیست که روی حالتی از Q «عمل می‌کند»، و به حالت دیگر می‌رود. ممکن است بدین صورت در نظر گرفته شود که نتیجه ترکیب توابعی است که مکرراً به توابع مختلف formula_12, formula_13 اعمال می‌شوند، و قس علی‌هذا. با استفاده از این مفهوم formula_14 را تعریف می‌کنیم. دو حرف formula_15 داده شده است، ممکن است شخصی تابع جدید formula_16 را با تکیه کردن بر formula_17 تعریف کند، که formula_18 نشان‌دهنده ترکیب توابع است. به وضوح، این فرایند می‌تواند به صورت بازگشتی ادامه داده شود؛ بنابراین تعریف بازگشتی ذیل را داریم: formula_19 که formula_20 رشته تهی است و: formula_21 که formula_22 و formula_11. formula_16 برای هر formula_25 تعریف شده است. ترکیب مکرر توابع یک مونوئید یا تکوار را به وجود می‌آورد. برای تابع انتقال، این مونوئید به عنوان "انتقال مونوئید" یا گاهی "شبه‌گروه تغییر شکل" شناخته می‌شود. همچنین این ساخت می‌تواند برعکس شود: formula_16 داده شده است، شخصی می‌تواند formula_27 را دوباره‌سازی کند، و بنابراین هر دو توصیف معادلند.