Posts

Showing posts from 2017

Program for Turing Machine to accept string of language given by pattern ab*c

Image
Formal definition of Turing Machine (TM) A Turing machine is a 7-tuple, (Q, Σ, Γ, δ,  q 0 , q accept , q reject ), where Q, Σ, Γ are all finite sets and 1. Q is the set of states, 2. Σ is the input alphabet not containing the blank symbol  B , 3. Γ is the tape alphabet, where  B  ∈ Γ and Σ ⊆ Γ, 4. δ: Q × Γ→Q × Γ × {L, R} is the transition function, 5.  q 0  ∈ Q is the start state, 6. q accept  ∈ Q is the accept state, and 7. q reject  ∈ Q is the reject state, where q reject  !=  q accept . State Diagram Here, Q= {q 0 , q 1 , q 2 , q 3 } Σ= {a, b, c} Γ= {a, b, c, B} q s =  q 0 q accept   = {q 3 } q reject   = {   Ø  } δ is given by the following transition table Transition Table: Program #include<stdio.h> #define BlankSpace '\0' int main() {     char inpstr[50];     int head, state;     printf("Enter String: ");     scanf("%s",inpstr);     state=0;     head=0;     printf("\n&qu

Program for Turing Machine capable of recognizing the language 1^n0^n where n>0

Image
Formal definition of Turing Machine (TM) A Turing machine is a 7-tuple, (Q, Σ, Γ, δ,  q 0 , q accept , q reject ), where Q, Σ, Γ are all finite sets and 1. Q is the set of states, 2. Σ is the input alphabet not containing the blank symbol  B , 3. Γ is the tape alphabet, where B ∈ Γ and Σ ⊆ Γ, 4. δ: Q × Γ→Q × Γ × {L, R} is the transition function, 5.  q 0  ∈ Q is the start state, 6. q accept  ∈ Q is the accept state, and 7. q reject  ∈ Q is the reject state, where q reject  !=  q accept . State Diagram Here, Q= {q 0 , q 1 , q 2 , q 3, q 4 } Σ= {0, 1} Γ= {0, 1, X, Y, B} q s =  q 0 q accept = {q 4 } q reject = { Ø } δ is given by the following transition table Transition Table: Program #include<stdio.h> #define BlankSpace '\0' int main() {     char inpstr[50];     int head, state;     printf("Enter String: ");     scanf("%s",inpstr);     state=0;     head=0;     pri

Program for PDA capable of recognizing the language w#wR where w ∈ {0, 1}* and ∑={0, 1, #}

Image
Formal definition of pushdown automaton (PDA) A pushdown automaton is a 6-tuple (Q, Σ, Γ, δ,  q 0 , F), where Q, Σ, Γ, and F are all finite sets, and 1. Q is the set of states, 2. Σ is the input alphabet, 3. Γ is the stack alphabet, 4. δ : Q × Σε × Γε→P(Q × Γε) is the transition function, 5.  q 0  ∈ Q is the start state, and 6. F ⊆ Q is the set of accept states. Alphabets Σε=∑ U {ε} and Γε=Γ U {ε} P( ) accounts for the non-determinism State Diagram Here, P = (Q, Σ, Γ, δ,  q 0 , F), where  Q = { q 1 ,  q 2 ,  q 3 ,  q 4 },   ∑ = {0, 1, #},  Γ= {0, 1, $}, q s = q 1 F = { q 1 ,  q 4 },   δ is given by the following transition table, cell entries are new state and TOS symbol pair, blank entries are ∅. Inputs are current state, input string and TOS symbols. Cell entries are new state and TOS symbol pair. Blank entries are ∅. Transition Table: Program #include<stdio.h> #define EOS '\0' #define SIZE

কম্পিউটার বিজ্ঞানের ছাত্রদের কয়টি প্রোগ্রামিং ভাষা শেখা দরকার?

Image
কম্পিউটার বিজ্ঞানের শিক্ষার্থীদেরকে প্রথমে স্ট্রাকচার্ড প্রোগ্রামিংয়ের সঙ্গে পরিচিত হতে হবে। তারপরে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের সঙ্গে পরিচিত হতে হবে। তারপরে মাইক্রোপ্রসেসর সম্পর্কে লেখাপড়া করার সময় অ্যাসেম্বলি ল্যাঙ্গুয়েজ শিখতে হবে। আরো শিখতে হবে একটি ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ (আর্টিফিশিয়াল ইন্টিলিজেন্স শেখার সময়)। স্ট্রাকচার্ড প্রোগ্রামিংয়ের জন্য সি, সি প্লাস প্লাস, জাভা কিংবা পাইথন ব্যবহার করা যেতে পারে। আরো অনেক ভাষাই চাইলে ব্যবহার করা যায়। যেকোনো একটি শিখলেই চলবে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের জন্য সি প্লাস প্লাস কিংবা জাভা ভালো হবে। তবে পাইথন কিংবা সি শার্পও ব্যবহার করলে চলবে। অ্যাসেম্বলি ল্যাঙ্গুয়েজ (assembly) শেখানোর সময় সাধারণত পুরনো ইন্টেল প্রসেসরের জন্য তৈরি জিনিস শেখানো হয় (এখন বিশ্ববিদ্যালয়গুলোতে ঠিক কোনটা শেখায় আমার জানা নেই)। তাই ক্লাসে শিক্ষকের পরামর্শ নিয়ে শিখে ফেলতে হবে। ফাংশনাল প্রোগ্রামিংয়ের জন্য লিস্প (Lisp) বা হ্যাস্কেল (Haskell) শিখলে ভালো। স্কালা (Scala)ও শেখা যেতে পারে। যেকোনো একটি শিখতে হবে আর কী। আর নিউমেরিক্যাল

সেরা ১০ টি আবিষ্কার যা পাল্টে দিয়েছে পৃথিবীকে !!

Image
বর্তমান বিজ্ঞান এক দিনে এত সমৃদ্ধ হয়নি।বড় বড় সব আবিষ্কার এর পেছনে কেবল একজনের হাত নেই; যুগে যুগে বহু জাতি, গোত্র এসব এর পেছনে কাজ করেছে; পরিশেষে পুরনতা দিয়েছে হয়ত একজন মানুষ। যাকে আমরা আবিষ্কারক বলে থাকি।প্রাচীন পাঁথরের যন্ত্রপাতি থেকে শুরু করে বর্তমান ডিজিটাল যন্ত্রপাতি উদ্ভাবন এর মধ্য দিয়ে মানবজাতির বিকাশ ঘটেছে। সর্বশেষ আমরা পেয়েছি আমাদের এই আধুনিক বিজ্ঞান। বিজ্ঞানের বহু আবিষ্কারের মধ্যে এখানে ১০ টি সংক্ষেপে তুলে ধরা হল - ১.চাকা প্রাচীনতম এই আবিস্কারটি বর্তমানে আমাদের ভ্রমন ক্ষেত্রে এক ব্যাপক বিল্পব ঘটিয়েছে। প্রত্নতাত্ত্বিক খনন এর হিসেবে সবচাইতে প্রাচীন চাকা তৈরি হয়েছিল ৩০০০ খ্রিষ্টপূর্বাব্দে প্রাচীন মেসোপটেমিয়াতে।তারপর থেকে লক্ষাধিক বার চাকার নতুন নতুন এবং উদ্ভাবনী নকশার ফলে বর্তমানে এটি প্রতিটি আধুনিক যানের এক অবিচ্ছিন্ন অংশ হিসেবে ব্যবহৃত হচ্ছে। ২.বাষ্প ইঞ্জিন টমাস সাভেরী সর্বপ্রথম ১৬৯৮ সালে বাষ্প ইঞ্জিন চালু করেন। তারপর ১৭৮১ সালে জেমস ওয়াট এর একটি উন্নত সংস্করন আনেন। আর যেটি বাষ্প ইঞ্জিন হিসেবে ধীরে ধীরে শিল্প বিপ্লব বয়ে আনে। ১৮ দশকে এই বাষ্প ইঞ্জি

২০১৭’র ঐতিহাসিক ১০টি প্রযুক্তি উদ্ভাবন

Image
সাল ২০১৭, প্রায় শেষই হয়ে এসেছে। আর কয়েকদিন পরেই আমরা হিসাব করতে বসব ২০১৭ আমাদের কি দিলো আর কি নিয়ে গেল। প্রতি ক্ষেত্রের প্রতিটা মানুষই একটা বছর থেকে কি পেল সেটা হিসাব করে। প্রযুক্তি ক্ষেত্রও এখানে ব্যতিক্রম নয় বরং অন্যান্য ক্ষেত্রের চেয়ে নতুন বছরের পাওয়া, না-পাওয়ার হিসেবের উন্মাদনাটা এখানে অনেকটাই বেশি। প্রযুক্তিপ্রেমী আর প্রযুক্তিপাগলদের মাতামাতির মাঝেই প্রতিটা বছর আসে আর চলে যায়। এই আসা আর চলে যাওয়ার মাঝখানে কোন ক্ষেত্রের কথা যদি বলতে হয় যার সবচেয়ে বেশি পরিবর্তন আর উন্নতি হয় তাহলে নিঃসন্দেহে সেটা হবে প্রযুক্তি। প্রতিটা নতুন আসা বছর সবচেয়ে বেশি চমক নিয়ে আসে প্রযুক্তি দুনিয়ায়। প্রতি বছর আগের বছরের চেয়ে আরো উন্নত, ব্যবহারযোগ্য এবং নতুন সব প্রযুক্তি পণ্য উদ্ভাবন করে প্রযুক্তি প্রতিষ্ঠানগুলি। নতুন বছরে এর পরিপ্রেক্ষিতে প্রযুক্তিতে অনেক পরিবর্তন আসে, আসে অনেক নতুন প্রযুক্তি উদ্ভাবন। শত শত এইসব প্রযুক্তির মধ্যে থেকে কয়েকটি থাকে ইতিহাস সৃষ্টি করার মত উদ্ভাবন। আজকে আমরা ২০১৭ সালের ইতিহাস সৃষ্টি করার মত ১০টি প্রযুক্তি উদ্ভাবন সম্পর্কে জানব। তো চলুন শুরু করা যাক। পক্ষাঘাত নিরাময় (Revers

IP Subnetting Bangla Tutorial (বাংলা ভাষায় IP Subnetting)

Image
Advanced Networking যারা শিখছে তাদের জন্য অত্যন্ত গুরুত্বপূর্ণ একটা বিষয় হচ্ছে Subnetting। দক্ষ Network Engineer হতে হলে চোখের নিমিষেই Subnet Mask / Network IP/ Block Size / Total Usable IP / 1st Usable IP / Last Usable IP/ Broadcast IP এই গুলা বার করা জানতে হবে। এখানে আমি Class-C এর Subnetting নিয়ে আলোচনা করেছি। Types of Addresses IPv4 এ তিন ধরণের অ্যাড্রেস আছে। ১। Network Address : Network Address দ্বারা একটি নেটওয়ার্ককে বুঝানো হয়। ২। Broadcast Address : Broadcast Address হলো একটি বিশেষ অ্যাড্রেস যা দ্বারা একটি নেটওয়ার্কের সকল Host এর সাথে কমিউনিকেট করা যায়। Broadcast Address হিসেবে Network Range এর শেষ অ্যাড্রেসটি ব্যবহৃত হয়। ৩। Host Address : আমি আগেই বলেছি, যদি কোন Host একটি নেটওয়ার্কে কমিউনিকেট করতে চায় তাহলে তার একটি স্বতন্ত্র অ্যাড্রেস থাকা প্রয়োজন। আর সেই অ্যাড্রেসটিকেই Host Address বলে। একটি Network Range এর Network Address ও Broadcast Address এর মধ্যবর্তী সকল অ্যাড্রেসসমূহকে Host Address হিসেবে ব্যবহার করা হয়। Network Prefix একটি গুরুত্বপূর্ণ প্রশ্নঃ একটি