نوشته‌ها

موازی سازی(Parallelism) چیست؟

ﺷﺮﮐﺖ ﻫﺎی ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪه ﭘﺮدازﺷﮕﺮ ﺑﺮای اﻓﺰاﯾﺶ ﺳﺮﻋﺖ ﭘﺮدازﻧﺪه ﻣﺠﺒﻮر ﺑﻪ ﺑﺎﻻﺑﺮدن ﻓﺮﮐﺎﻧﺲ ﭘﺮدازﺷﮕﺮ ﺑﻮدﻧﺪ. ﯾﮏ راه اﻓﺰاﯾﺶ وﻟﺘﺎژ ﻣﺼﺮﻓﯽ ﭘﺮدازﻧﺪه ﺑﻮد ﮐﻪ دارای ﻧﻘﺎط ﺿﻌﻔﯽ ﻣﺎﻧﻨﺪ اﻓﺰاﯾﺶ دﻣﺎ و اﻓﺰاﯾﺶ ﻣﺼﺮف ﺑﺎﻃﺮی ﻧﯿﺰ ﺑﻮد. از ﻃﺮﻓﯽ ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪﮔﺎن ﭘﺮدازﻧﺪه ﺑﻪ ﮐﻤﮏ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن ﭘﯽ ﺑﻪ ﺑﯿﮑﺎری زﯾﺎد ﭘﺮدازﺷﮕﺮﻫﺎ در زﻣﺎن ﺳﻮﯾﭻ ﮐﺮدن ﻓﺮاﯾﻨﺪ ﻫﺎ و ﻧﺦ ﻫﺎ ﺷﺪﻧﺪ ﮐﻪ ﺣﺪود ﻧﯿﻤﯽ از زﻣﺎن ﭘﺮدازش را ﺑﻪ ﻫﺪر ﻣﯽ داد. ﺑﺮاي ﺟﺒﺮان ﺣﺎﻓﻈﻪ ﮐﺶ را ﮔﺴﺘﺮش دادﻧﺪ اﻣﺎ ﺑﻪ دﻟﯿﻞ ﮔﺮان ﺑﻮدﻧﺶ ﺑﺎز دﭼﺎر ﻣﺤﺪودﯾﺖ ﺑﻮدﻧﺪ. ﺑﻨﺎﺑﺮاﯾﻦ ﭘﺮدازﻧﺪه ﻫﺎﯾﯽ ﺗﻮﻟﯿﺪ ﮐﺮدﻧﺪ ﮐﻪ ﺑﺘﻮاﻧﺪ ﭘﺮازش ﻣﻮازي را (در اﺑﺘﺪا) در دو ﻫﺴﺘﻪ ﺑﻪ اﺟﺮا ﺑﺮﺳﺎﻧﻨﺪ.

ﻧﺎم اﯾﻦ ﻫﺴﺘﻪ ﻫﺎ ﻫﺴﺘﻪ ﻫﺎی ﺳﺨﺖ اﻓﺰاری ﯾﺎ ﻓﯿﺰﯾﮑﯽ ﮔﺬاﺷﺘﻨﺪ. اﻧﺪك زﻣﺎﻧﯽ ﺑﻌﺪ ﻓﻨﺎوری ای ﺑﺮای رﺳﯿﺪن ﺑﻪ ﭘﺮدازش ﻣﻮازی اﻣﺎ در ﺳﻄﺢ ﻣﺤﺪود Hyper ﺗﺮی و ارزان ﺗﺮ ﺑﺎ ﻧﺎم اﺑﺮ ﻧﺨﯽ ﯾﺎ Hyper-Threading اراﺋﻪ ﮐﺮدﻧﺪ و ﻧﺎم آن را ﻫﺴﺘﻪ ﻫﺎی ﻣﻨﻄﻘﯽ ﯾﺎ ﻧﺦ ﻫﺎی ﺳﺨﺖ اﻓﺰاری ﮔﺬاﺷﺘﻨﺪ. ﺣﺎل ﻧﻮﺑﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن ﺑﻮد ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺑﺮاي اﺳﺘﻔﺎده از اﯾﻦ ﻓﻨﺎوری ﻫﺎی ﻧﻮﯾﻦ ﺑﻨﻮﯾﺴﻨﺪ. ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﻮازی ﻋﻨﻮاﻧﯽ اﺳﺖ، ﮐﻪ ﻣﻮﺿﻮﻋﯽ ﮔﺴﺘﺮده در دﻧﯿﺎي ﻧﺮم اﻓﺰار اﯾﺠﺎد ﮐﺮده است.

روش موازی سازی(Parallelism(

ﺳﺎده ﺗﺮﯾﻦ ﺷﯿﻮه ﻣﻮازي ﺳﺎزي در ﻗﺎﻟﺐ Task ها ﺻﻮرت ﻣﯽ ﮔﯿﺮد، در ﻫﺮ Task ﺗﺎﺑﻊ ﯾﺎ ﻗﻄﻌﻪ ﮐﺪي ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد و ﺳﭙﺲ ﺑﻮﺳﯿﻠﻪ Delegate اي ﮐﻪ ﮐﺎر ﻣﺪﯾﺮﯾﺖ Task ﻫﺎ را ﺑﺮ ﻋﻬﺪه دارد اﯾﻦ  Task ﻫﺎ ﺑﺼﻮرت ﻣﻮازی ﺑﺴﺘﻪ ﺑﻪ ﻫﺴﺘﻪ ﻫﺎی ﻣﻨﻄﻘﯽ در دﺳﺘﺮس اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ. روش ﻫﺎی ﺑﺴﯿﺎری ﺑﺮاي ﻣﻮازی ﺳﺎزی وﺟﻮد دارد ﻣﺎﻧﻨﺪ اﺳﺘﻔﺎده از ﮐﻼس Parallel.For یا Parallel.ForEach ﮐﻪ در ﺟﺎي ﺧﻮد ﮐﺎرﺑﺮد ﻫﺎی ﻣﺨﺘﺺ ﺑﻪ ﺧﻮدﺷﺎن را دارﻧﺪ. همیشه الگورﯾﺘﻢ ﻫﺎی ﺗﺮﺗﯿﺒﯽ را ﻧﻤﯽ ﺗﻮان ﺑﻪ الگورﯾﺘﻤﯽ ﻣﻮازي ﺗﺒﺪﯾﻞ ﮐﺮد ﭼﺮا ﮐﻪ ﮐﺪ ﻫﺎی ﺗﺮﺗﯿﺒﯽ ای ﻫﺴﺘﻨﺪ ﮐﻪ اﺟﺮاي ﮐﺪ ﻫﺎي دﯾﮕﺮ ﻧﯿﺎز ﺑﻪ ﺗﮑﻤﯿﻞ ﺷﺪن آن ﻫﺎ دارد. ﺑﺴﺘﻪ ﺑﻪ الگورﯾﺘﻢ درﺻﺪی از آن را ﻣﯽ ﺗﻮان ﻣﻮازی ﮐﺮد. ﻗﺒﻞ از ﻣﻮازی ﺳﺎزی ﺑﺎﯾﺪ ﻣﻮازی ﺳﺎزی را در ذﻫﻨﺘﺎن ﻃﺮاﺣﯽ ﮐﻨﯿﺪ.


Parallel Programming  یا برنامه نویسی موازی یعنی تقسیم یک مسئله به مسائل کوچکتر و سپردن آن ها به واحد های جداگانه برای پردازش کردن.این مسائل کوچک به صورت همزمان شروع به اجرا می کنند. Parallel Programming وظیفه یا Task را به اجزا مختلفی تقسیم می کند.

فرم های مختلفی از Parallel وجود دارد .مانند bit-level ،  instruction-level، data ، taskدر این آموزش راجع به Data Parallelism و Task Parallelism بحث خواهیم کرد.

تصور کنید هسته CPUمتشکل از چندین ریزپردازنده است که همه این ها به حافظه اصلی دسترسی دارند.هر کدام از این ریزپردازنده ها قسمتی از مسئله را حل می کنند.

Data Parallelism

این مورد بر روی توزیع دیتا در نقاط مختلف تمرکز می کند.یعنی داده را به بخش های مختلفی می شکند.هر کدام از این بخش ها به Thread جداگانه ای برای پردازش داده می شود.

Task Parallelism

این مفهوم وظایف یا Taskها را به بخش هایی شکسته و هر کدام را به یک Thread جهت پردازش می دهد.

در پروژه ای که به صورت ضمیمه این مقاله می باشد (در پروژه DataParallisem)به سه صورت مختلف وظیفه یا Task تعریف شده است.

۱-به صورت Function

۲- به صورت Delegate

۳-به صورت لامبدا

کد این قسمت به صورت زیر می باشد

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
  
namespace TPL_part_1_creating_simple_tasks
{
    class Program
    {
        static void Main(string[] args)
        {
            //Action delegate
            Task task1 = new Task(new Action(HelloConsole));
 
            //anonymous function
            Task task2 = new Task(delegate
            {
                HelloConsole();
            });
             
            //lambda expression
                Task task3 = new Task(() = > HelloConsole());                 
             
            task1.Start();
            task2.Start();
            task3.Start();
             
            Console.WriteLine("Main method complete. Press any key to finish.");
            Console.ReadKey();
        }
        static void HelloConsole()
        {
            Console.WriteLine("Hello Task");
        }
    }
}

 

بعد از اجرا، هر کدام از Task ها اجرا شده البته به صورت همزمان و کارهای محوله به آنها را انجام میدهند.

آموزش موازی سازی در سی شارپ

 

در این آموزش بر روی مفهوم Data Parallelism تمرکز خواهیم کرد.توسط Data Parallelism عملیات یکسانی بر روی المانهای یک مجموعه یا آرایه به صورت همزمان انجام خواهد شد. که در فضای نام System.Threading.Tasks.Parallel قرار دارد. روش اصلی برای انجام Data Parallelismنوشتن یک تابع است که یک حلقه ساده بدون Thread دارد .

public static void DataOperationWithForeachLoop()
       {
           var mySource = Enumerable.Range(0, 1000).ToList();
           foreach (var item in mySource)
           {
               Console.WriteLine("Square root of {0} is {1}", item, item * item);
           }
       }

 

خروجی برنامه را در زیر می بینید

آموزش موازی سازی در سی شارپ

 

عملیات Data Parallelism را می توان با یک حلقه foreach موازی هم انجام داد.

public static void DataOperationWithDataParallelism()
        {
            var mySource = Enumerable.Range(0, 1000).ToList();
            Parallel.ForEach(mySource, values = > CalculateMyOperation(values));
        }
 
        public static  void CalculateMyOperation(int values)
        {
            Console.WriteLine("Square root of {0} is {1}", values, values * values);
        }

بعد از اجرا شکل زیر را خواهید دید.

آموزش موازی سازی در سی شارپ

 

در این کد در داخل حلقه Foreach  یک تابع Delegate قرار دادیم در این تابع به ازای هر تکرار حلقه بر روی مجموعه تابعی که درون Delegate فراخوانی کرده ایم اجرا خواهد شد.

Data Parallelism توسط PLINQ

PLINQ به معنای Parallel LINQ است .این نسخه از لینک جهت پیاده سازی لینک بر روی پردازنده های چند هسته ای نوشته شده است.

توسط لینک می توان اطلاعات را از چندین منبع بازیابی کرد.و در نهایت این نتایج با هم ترکیب می شوند تا نتیجه نهایی Query به دست آید.اما اگر از PLINQاستفاده کنیم این دستورات به جای اینکه پشت سر هم اجرا شوند به صورت موازی اجرا می شوند.

برای این که از PLINQ استفاده کرد فقط کافی است که در انتهای عبارت لینک از AsParallel استفاده کنیم.به کد زیر توجه کنید

public static void DataOperationByPLINQ()
    {
        long mySum = Enumerable.Range(1, 10000).AsParallel().Sum();
        Console.WriteLine("Total: {0}", mySum);
    }

بعد از اجرا شکل زیر را خواهید دید

آموزش موازی سازی در سی شارپ

 

برای به دست آوردن اعداد فرد در این مجموعه توسط Plinq از کد زیر استفاده می کنیم

public static void ShowEvenNumbersByPLINQ()
      {
          var numers = Enumerable.Range(1, 10000);
          var evenNums = from number in numers.AsParallel()
                         where number % 2 == 0
                         select number;
 
          Console.WriteLine("Even Counts :{0} :", evenNums.Count());
      }

پس از اجرا شکل زیر را خواهید دید

آموزش موازی سازی در سی شارپ

 

توسط متد Parallel.Invoke() می توانید چندین متد را مانند شکل زیر به صورت همزمان اجرا کنید.

Parallel.Invoke(    
() = > Method1(mycollection),    
() = > Method2(myCollection1, MyCollection2),    
() = > Method3(mycollection));

 MaxDegreeOfParallelism

ماکزیمم تعداد پردازش های موازی را مشخص می کند در کد زیر و در داخل Foreach در پارامتر دوم ماکزیمم تعداد پردازش های موازی مشخص شده اشت.

loopState.Break()

توسط این کد به Thread هایی که پردازش آنها طول کشیده اجازه می دهیم که بعدا Break شوند.به کد زیر توجه کنید.

var mySource = Enumerable.Range(0, 1000).ToList();    
int data = 0;    
Parallel.ForEach(    
    mySource,    
    (i, state) = >    
    {    
        data += i;    
        if (data  >  100)    
        {    
            state.Break();    
            Console.WriteLine("Break called iteration {0}. data = {1} ", i, data);    
        }    
    });    
Console.WriteLine("Break called data = {0} ", data);    
Console.ReadKey();

منبع

 


فایل ضمیمه این آموزش

TPL_part_1_creating_simple_tasks

رمز فایل: behsanandish.com


دانلود کتاب آموزش برنامه نویسی موازی با #C

Parallel Programming In Csharp

رمز فایل: behsanandish.com

 

دوربین های عکاسی آنالوگ

دوربین آنالوگ دستگاهی برای ثبت عکس بر روی فیلم عکاسی (سطح حساس به نور) می‌باشد و تصویر گرفته شده بر روی فیلم بعد از ظهور بصورت نگاتیو یا منفی (ریورسال) قابل رویت است. دوربین عکاسی آنالوگ بصورت‌های:

  1. کاملاً مکانیکی،
  2. نیمه خودکار،
  3. کاملاً خودکار (ناوبری الکترونیکی)،

طراحی و ساخته شده است.

اولین دوربین ۳۵ میلیمتری با قابلیت تعویض نمایاب و لنز(system camera)، نیکون اِف

اولین دوربین ۳۵ میلیمتری با قابلیت تعویض نمایاب و لنز(system camera)، نیکون اِف

تاریخچه

اتاق تاریک، اولین قدم بزرگ در راه پیدایش عکاسی بود که توسط نقاشان ایتالیا یی در طی قرن شانزدهم میلادی برداشته شد. برای بدست آوردن حداکثر وضوح، تنظیم فاصله روزنه از دیواری که تصویر روی آن بازتابیده می‌شد، از مشکلات اصلی در این سیستم بشمار می‌رفت. رفع این مشکل، باعث ورود عدسی به دنیای عکس و تصویر گردید.

انواع دوربین های آنالوگ

  1. دوربین سوراخ سوزنی (Pin Hole)،
  2. دوربین تک‌لنزی غیربازتابی (rangefinder camera)،
  3. دوربین تک‌لنزی بازتابی (Single Lens Reflex)،
  4. دوربین دولنزی بازتابی (Twin-lens reflex)،
  5. دوربین قطع بزرگ (View Camera).

سیستم ضبط تصویر

در یک دوربین آنالوگ، فیلم حساس به نور، تصویر را ذخیره می‌سازد و بعد از عملیات شیمیایی برای نگهداری تصویر از آن استفاده می‌شود.

نگارخانه

دوربین سوراخ سوزنیکداک رتینا ۱۹۵۷آساهی فلکس ۱۹۵۵رولی فلکسدوربین دولنزی بازتابی (Voigtländer Brillant).اولین دوربین تک لنزی بازتابی، کانتکس اس، تولید سال ۱۹۴۹نیکون اِف ۱۹۵۹، اولین دوربین ۳۵ میلیمتری با قابلیت تعویض نمایاب و لنزدوربین ۵*۷ اینچ تویو.

دوربین آنالوگ به دوربینی گفته میشود که با دست و یا دستگاه های مکانیکی خود دوربین تنظیم میشود و دارای فیلم است. ساختار دوربین های آنالوگ بر این اساس است که؛ نور از داخل لنز گذشته و پس از برخورد با یک آینه، به سوی چشم ناظر هدایت می شود. وقتی عکاس کادر مناسب و دیگر پارامترها را تنظیم کرد، دکمه شاتر را می فشارد و با این کار بخش هایی که مانع رسیدن نور به صفحه حساس می شده اند، از میان برداشته می شوند. طبیعتاً با بالا رفتن آینه، عکاس قادر به مشاهده آن چه دوربین به سوی آن نشانه رفته است، نیست. با توجه به فاصله کانونی لنز، تصویر مطلوب در نقطه ای خاص و وارونه تصویر اصلی تشکیل می شود. دوربین و فوکوسر آن نیز سبب می شوند این تصویر درست روی محل مورد نظر عکاس؛ یعنی، صفحه حساس(که در دوریبن های آنالوگ، فیلم است) تشکیل شود.

اجزای مختلف یک دوربین آنالوگ

۱) لنز دوربین
۲)نگه دارنده ی لنز
۳)دیافراگم
۴)چرخاننده ی فیلم
۵)فیلم عکاسی
۶)محل اتصال بند دوربین
۷)شاتر
۸)دکمه ی کنترل سرعت عکسبرداری
۹)صفحه ی مشخصات عکس و شارژ دوربین(در دوربین هایی که باتری دارند)
۱۰)ویزور
۱۱)محل اتصال فلش خارجی
۱۲)حلقه ی فوکوس

مراحل گرفته شدن یک عکس

هنگامی که فیلم داخل دوربین قرار میگیرد معمولا ۲-۳ تا فریم به علت در معرض نور قرار گرفتن میسوزند بنابراین بهتر است فیلم ها رو ۲-۳ تا جلو بزنیم. جلو زدن فیلم به این صورت است که یک دسته ی مکانیکی که در بالای دوربین قرار دارد را با چرخاندن آن تا انتها، میله ی چرخاننده ی فیلم می چرخد و فیلم یک فریم کامل جلو میرود! معمولا برای اولین استفاده از فیلم باید ۲-۳ بار این حرکت رو تکرار کرد.
دقت کنید وقتی یک فریم رو کامل جلو میبرید تا اینکه یک بار شاتر فشرده نشود (در واقع عکسی گرفته نشود) نمیتوان دسته ی چرخاننده ی فیلم را حرکت داد. از روش معکوس این حرکت (چرخاندن فیلم در خلاف جهت) هم میتوان برای تکنیک هایی مانند مولتی اکسپوز استفاده کرد.و هم با فشردن دکمه ی آزاد کننده ی فیلم، برای جمع کردن کامل فیلم برای ظهور عکس. (جزئیات در برخی دوربین ها کمی متفاوت است) بعد از اینکه یک فریم آماده ی عکس گرفتن شد و پس از انتخاب کادر مناسب و تنظیم دیافراگم مناسب با توجه به حساسیت فیلم مورد استفاده قرار گرفته و فوکوس صحیح دکمه ی شاتر را فشار میدهیم.

آینه بالا می رود و پرده ی شاتر هم بالا میرود. (در دوربین های آنالوگ برخی پرده ها یک تکه هستند و برخی ۳ تکه که پرده های ۳ تکه طبیعتا خیلی بهتر هستند) نور وارد شده به لنز در برخورد به نگاتیو به مواد شیمیایی ای که روی فیلم پوشونده شده برخورد میکند این نور در واقع انرژی فعال سازی یک واکنش شیمیایی است. این مواد شیمیایی با توجه به شدت و رنگ نور (طول موج) واکنش شیمیایی انجام می دهند که بعدا در ظهور عکس، ظاهر کننده این مواد شیمیایی که واکنش های مختلف دادند رو از هم تفکیک کرده و هر فراورده روی صفحه ی فیلم رو به صورت رنگ های نگاتیو (منفی نور های عکس) در می آورد.

یکی از مزیت های دوربین آنالوگ نشان دادن خیلی خوب و واقعی رنگ است. اما اگر به یک نقطه نور زیاد برسد (در واقع اور اکسپوز بشود) آن قسمت کاملا سفید خواهد شد.سپس فیلم ظاهر شده اسکن و اینورت می شود و عکس قابلیت چاپ پیدا می کند. حساسیت فیلم های مورد استفاده قرار گرفته به مواد شیمیایی موجود در اون وابسته است.
فیلم های سیاه سفید از حساسیت ۱۰۰ تا ۳۲۰۰ یا حتی ۶۴۰۰ برخوردارند اما فیلم های رنگی معمولا دارای حساسیت های ۱۰۰ و ۲۰۰ و ۴۰۰ هستند. هرچه حساسیت بیشتر باشد ذرات شیمیایی روی صفحه فیلم بزرگتر هستندکه این باعث پایین آمدن کیفیت عکس خواهد شد ولی فقط در چاپ به ابعاد خیلی بزرگ این افت کیفیت احساس میشود.

مزایای عکاسی آنالوگ

۱- مصرف باطری به مراتب کمتر نسبت به عکاسی دیجیتال و عدم احتمال ایجاد مشکل در کار عکاسی های طولانی مدت به علت تمام شدن باطری
۲- عدم وجود نویز در نوردهی های طولانی مدت
۳- عدم وابستگی کیفیت عکس به نوع دوربین.البته به لنز بستگی دارد ولی به بدنه دوربین خیلی وابسته نیست و کیفیت عکس به نوع فیلم مورد استفاده بستگی دارد.
۴- بیشتر بودن دامنه دینامیکی فیلم نسبت به سنسور دیجیتال
۵- ارزان تر بودن دوربین های فیلمی
۶- امکان استفاده از فیلم های مختلف در یک دوربین ( مثل حساس به مادن قرمز و … )
۷- دوربین های فیلمی نسبت به دیجیتال ها در برابر آسیب ها حساسیت کمتری دارند.ضربه٬ گرد و غبار٬ رطوبت و …
۸- امکان خرابی کمتری دارند و در شرایط بحرانی قابل اطمینان تر هستند.


مزایای دوربین های عکاسی دیجیتالی:

۱- مرور فوری عکس ، بدون این که عکاس منتظر شود که عکس ظاهر شود. اگر مشکلی در عکس باشد ، عکاس میتواند مشکل را فورا تصحیح کند و عکس دیگری بگیرد.

۲- فقط عکس های خوب چاپ میشود، در نتیجه کاربر میتواند تعداد زیادی عکس با اختلافات جزئی و تنظیمات مختلف از یک صحنه بگیرد و بعد بهترین ان را انتخاب و چاپ کند.

۳- اگر شخص رایانه داشته باشد ، ذخیره دائم عکسها ارزانتر از فیلم از کار در می اید.

۴- عکس ها را میتوان از یک جایی به جای دیگر کپی کرد بدون اینکه کیفیت ان کاهش یابد.

۵- هر کس میتواند با داشتن رایانه و یک پرینتر معمولی ، عکس های خودش را چاپ کند. تازه با استفاده از پرینت های مخصوص دوربین ها ، به رایانه هم نیازی نیست و دوربین را میتوان مستقیما به پرینتر وصل کرد.

۶- دوربین های دیجیتال میتوانند کوچکتر از دوربین های انالوگ با همان کیفیت عکس ، ساخته شوند.

۷- قابلیت استفاده کردن داده هایی مثل زمان و تاریخ عکاسی، مدل دوربین، سرعت شاتر، سرعت فیلم و دیگر موارد به فایل عکس مورد نظر، در حالی که این قابلیت در فیلم های عکاسی فقط به چاپ تاریخ روی عکس ها محدود میشود.

۸- در دوربین های دیجیتال از خیلی افکت های تصویری میتوان استفاده کرد که در دوربین های فیلمی امکان ندارد.

۹- قابلیت گرفتن صدها عکس بدون این که نیازی به تغییر چیزی باشد. در حالی که در دوربین های فیلمی بعد از ۲۴ یا ۳۶ عکس باید فیلم را عوض کرد.

۱۰- خیلی از دوربین های دیجیتال،خروجی AV دارند که نشان دادن عکس ها را به دیگران در تلویزیون ممکن میسازد.

۱۱- عکاسی دیجیتال این امکان را فراهم میکند که شما تنظیمات مختلف دوربین و سبکهای مختلف عکاسی را تجزیه کنید و تکنیک عکاسی تان را بهبود بخشید ، بدون این که لازم باشد هزینه زیادی بدهید از نظر زمان و از نظر وقت و انرژی.

۱۲- ابزار ضد تکان دوربین های دیجیتال ، گرفتن عکس های ترو تمیز با دوربین را روی دست ممکن میکند در حالی که قبلا حتما نیاز به سه پایه بود.

۱۳- دیگر هر کس یک تاریک خانه ، خانگی دارد و میتواند با رایانه و نرم افزار تغییرات لازم را در عکس ها بدهد.

۱۴- مقادیر ISO را به راحتی میتوان در وسط عکس تغییر داد. مثلا وقتی هوا افتابی است ولی یکدفعه ابری میشود ، قبلا لازم بود که فیلم را دربیاورید و فیلم جدید با مقدار ISO مناسب را داخل دوربین بگذارید ولی با دوربین دیجیتال این تغییرات فقط با فشار چند دگمه انجام میشود.

۱۵- برای فرستادن عکسها به داخل رایانه ، دیگر نیازی به اسکنر نیست.

 ویژگی های منفی دوربین دیجیتال نسبت به دوربین آنالوگ :

۱- مصرف انرژی باطری های دوربین های دیجیتال نسبت به دوربین های فیلم دار خیلی بیشتر است در نتیجه ممکن است وسط عکاسی یک دفعه با دوربین خاموش مواجه شویم.

۲- استناد عکس های دیجیتال نسبت به عکس های فیلمی کمتر است چون میشود در انها دستکاری کرد البته بعضی از تولید کنندگان تلاش میکنند به روشهایی برای تشخیص عکس های دستکاری شده برسند تا این ضعف را جبران کنند.

۳- سنسورهای دیجیتال اغلب دامنه دینامیکی کمتری نسبت به فیلم چاپی رنگی دارند البته تعدادی از سنسور های CCD جدیدتر مثل FUJIS SUPER CCD که دیودها با حساسیت های مختلف را با هم ترکیب کرده اند برای حل این مشکل به میدان امده اند.

۴- در بعضی از عکس های دیجیتالی نویز تصویری چند رنگ قابل مشاهده است.

۵- ویرایش و پردازش فایل های RAW ( فایلهای حرفه ای عکاسی ) خیلی طول می کشد.

۶- برای عکاسی در محل های پرت و دور افتاده عکاس باید کلی باطری با خودش حمل کند که وزن بار عکاس را افزایش میدهد و کار را برای او سخت تر میکند.

تفاوت تصویر دوربین آنالوگ با دوربین دیجیتال

منبع : http://www.kingit.ir

دلایل استفاده از دوربین آنالوگ توسط کاربران امروزی

۱ . فیلم همچنان خوب است

همه ما کمابیش شانس آن را داشته‌ایم که دوره عکاسی فیلم را تجربه کنیم. عکس‌های خانوادگی ما شامل سفرها و گردش ها و جشن‌های خانوادگی همگی با دوربین‌های آنالوگ و فیلم عکاسی شده‌اند. اما همچنان که آلبوم عکس‌های آ سال‌ها را نگاه می‌کنیم، متوجه کیفیت بارز و خوب عکس‌ها می‌شویم. همچنان عکس‌ها آنقدر کیفیت دارند که با عکس‌های بهترین دوربین‌های دیجیتال امروز برابری کنند.

فیلم همچنان خوب است

امروزه با وجود اینکه ما عکس‌های زیادی چه با دوربین و چه با اسمارتفون خود ثبت می‌کنیم، اما تقریباً آلبومی برای نگهداری آنها نداریم. به همین دلیل یکی از دغدغه‌های ما نگهداری و ساماندهی عکس‌ها است. با این حال هیچ وقت این اتفاق نمی‌افتد. اما در گذشته اینطور نبود و با گرفتن عکس، پس از چاپ عکس‌ها به صورت منظم به آلبوم عکس منتقل می‌شدند. همچنان که ما امروز از دوره فیلم عکس بیش‌تری می‌بینیم.

۲ . «داینامیک رنج» فیلم بیش‌تر است

اشتباه نکنید، تکنیک عکس «HDR» مدتها است که در عکاسی وجود دارد، اما در عکاسی دیجیتال مدت کوتاهی است که باب شده‌است. در عکاسی دیجیتال به دلیل محدودیت‌های موجود، برای رسیدن به یک عکس HDR معقول باید از یک صحنه ۳ عکس با نوردهی‌های متفاوت ثبت کرد. اما عکسی که با فیلم ثبت شده‌باشد، آنقدر داینامیک رنج بالایی دارد که به تنهایی می‌توان آن را به عکس HDR تبدیل کرد.

«داینامیک رنج» فیلم بیش‌تر است

یک فیلم سیاه و سفید بیش‌تر از ۶ پله در تاریکی و ۶ پله در روشنایی داینامیک رنج دارد. همچنین یک فیلم رنگی به راحتی در دو پله از هر سمت روشنایی و تاریکی قابلیت بازگشت با جزئیات دارد. علاوه بر این‌ها یک عکس فیلم بسیار به آنچه که ما با چشم خود می‌بینیم نزدیک‌تر است.

۳ . فیلم باعث آرامش می‌شود

وقتی با عکاسی دیجیتال طرف هستیم، از یک سوژه ده‌ها عکس با ترکیب‌بندی‌های مختلف ثبت می‌کنیم. با این وجود باز هم دقت کافی در ثبت عکس نکرده و بسیاری از مشکلات عکس را به فتوشاپ می‌سپاریم.

فیلم باعث آرامش می‌شود

اما در عکاسی فیلم اینگونه نیست. باید با حوصله ترکیب‌بندی کرده و بهترین نورسنجی را انجام دهیم. با دقت فراوان و آرامش از یک سوژه تنها یک عکس ثبت می‌کنیم. این دقت و حصله باعث ایجاد آرامش در عکاس می‌شود.

۴ . فیلم امنیت بیش‌تری دارد

قدیمی‌ترین عکس دیجیتالی که دارید متعلق به چه زمانی‌است؟ آن را در کجا ذخیره کرده‌اید؟ با وجود پیشرفت بسیار زیاد فناوری، اما همچنان باید گفت که عکس‌های دیجیتال امنیت لازم را ندارند. آنها تنها چند فایل کامپیوتری هستند که با یک اتفاق ساده امکان از بین رفتن و یا آسیب دیدن آنها وجود دارد. حتی نظریه‌ای وجود دارد که ممکن است قرن حاضر به قرن فراموش شده تبدیل شود.

فیلم امنیت بیش‌تری دارد

در مورد فیلم قضیه کاملاً متفاوت است. به صورت اولیه عکس‌ها چاپ می‌شوند و همیشه نسخه‌ واقعی از آنها وجود دارد. علاوه بر این نگاتیو عکس‌ها نیز آرشیو می‌شوند و می‌توانند دوباره چاپ شوند. همانطور که می‌دانید درحال حاضر هر نگاتیوی که از گذشته پیدا شود به راحتی قابل چاپ و حتی ترمیم است. مثال آن عکس‌هایی است که از بیش از ۱۰۰ پیش کشف می‌شوند و به راحتی و با کیفیت بالا چاپ می‌شوند.

۵ . فرآیند ظهور و چاپ در فیلم بسیار لذت بخش است

یکی از جواب‌هایی که برخی از عکاسان به ما دادند، دلبستگی آنها به فرآیند ظهور فیلم و چاپ عکس بود. در عکاسی دیجیتال به محض گرفتن عکس می‌توانید نتیجه کار را ببینید. اما در فیلم این پروسه کاملاً متفاوت است.

فرآیند ظهور و چاپ در فیلم بسیار لذت بخش است

پس از ثبت عکس باید آن را ظهور کرد. مراحل ظهور فیلم و استفاده از داروهای مختلف برای بسیاری از عکاسان بسیار دلپذیر و آرام‌بخش است. پس از طری مراحل ظهور با مرحله چاپ طرف هستیم که در آنجا به مرور عکس در مقابل عکاس شکل می‌گیرد و این دلچسب‌ترین لحظه کار است. لحظه‌ای که نتیجه کار دیده می‌شود.

۶ . نیازی به برق ندارید

تصور کنید دنیا به پایان خود رسیده‌است و شرایط طوری است که برقی برای استفاده وجود ندارد؛ چگونه باطری دوربین خود را شارژ خواهید کرد؟ خارج از شوخی، باید اذعان کرد که بشر امروز به شکل کامل وابسته به انرژی برق است و اگر در شرایطی قرار بگیرد که برق در دسترس نباشد، عملاً از زندگی ساقط می‌شود. در مورد عکاسی دیجیتال هم این قضیه صدق می‌کند و به محض نبود برق، عملاً عکاسی هم تعطیل است.

نیازی به برق ندارید

فرآیند عکاسی با فیلم از ابتدا تا انتها هیچ وابستگی‌ای به برق ندارد. تمام اتفاقاتی که بر روی فیلم می‌افتد یک فرآیند شیمیایی است که در واکنش به نور اتفاق می‌افتد. از این‌رو در هر شرایطی امکان عکاسی وجود دارد.

۷ . فیلم «چشم ‌نواز» تر است

حتی اگر طرفدار این نظریه هم نباشید، حتماً قبول دارید که فیلم رنگ و حسی متفاوت از عکس دیجیتال دارد. درحال حاضر فیلترهای مختلفی بر روی نرم‌افزارهای مختلف برای اعمال بر روی عکس‌های دیجیتال وجود دارد تا آنها را به فیلم شبیه کند. اما واقعیت این است که با وجود نتایج خوب، همچنان فیلم حسی متفاوت دارد که با دیجیتال قابل دستیابی نیست.

فیلم «چشم ‌نواز» تر است

دلیل همه این‌ها فرآیند کاملاً متفاوت فیلم و دیجیتال در ثبت یک عکس است. بسیاری اعتقاد دارند که این چشم‌نواز تر بودن فیلم، به دلیل شبیه‌ت بودن آن به آنچیزی است که با چشم خود می‌بینیم.

۸ . عکس دیجیتال واقعیت جعلی است

همانطور که می‌دانید یک عکس دیجیتال از مجموعه‌ای از پیکسل‌ها تشکیل می‌شود. این پیکسل‌ها به خودی خود هویتی ندارند و تنها نمایش دهنده یک رنگ هستند. از این رو بسیاری بر این باورند که عکس دیجیتال تنها یک واقعیت جعلی هستند و به همین دلیل آنها را رد می‌کنند.

عکس دیجیتال واقعیت جعلی است

در فیلم قضیه متفاوت است. هر فیلم تشکیل شده از بلورهای ریزی است که در اندازه‌های متفاوت و به شکلی نامنظم بر روی سطح فیلم قرار گرفته‌اند. حتی اگر با یک میکروسکوپ هم سطح یک فیلم را نگاه کنید، باز هم به یک شمای کلی از تصویر می‌رسید، اما در عهکس دیجیتال تنها با چند موزاییک طرف خواهید شد.

۹ . دوربین‌های فیلم ارزان‌تر هستند

در حال حاضر اگر بخواهید جدید‌ترین دوربین‌های دیجیتال DSLR را بخرید باید بیش از ۳ هزار دلار هزینه کنید و این مبلغ تنها برای بدنه آنها است. هزینه دیگری هم باید برای خرید لنز در نظر بگیرید. حتی دوربین‌های حد متوسط و یا دست دوم‌ها هم گران هستند.

دوربین‌های فیلم ارزان‌تر هستند

دوربین‌های فیلم اما در بهترین کیفیتشان با کمترین قیمت قابل خرید هستند. هزینه‌ای که برای خرید بهترین دوربین فیلم خواهید کرد کمتر از یک دهم خرید بهترین دوربین DSLR است.

۱۰ . برای متفاوت بودن

در حال حاضر روزانه میلیون‌ها عکس در شبکه‌های اجتماعی و وبسایت‌ها منتشر می‌شود. گرفتن عکسی که از میان این همه عکس قابل توجه باشد نیازمند منحصر بفرد بودن و تفاوت است. یکی از راه‌های ایجاد تفاوت در عکس، ثبت آنها با فیلم است.

برای متفاوت بودن

علاوه بر تفاوتی که بین دیجیتال و فیلم وجود دارد، گرفتن عکس با دوربین‌های فیلم خاص نیز می‌تواند خلاقیت‌های ویژه‌ای برای شما به وجود بیاورد. دوربین‌هایی که هیچ کس کار با آنها را حتی بلد هم نیست.

۱۱ . به خاطر ایرادهایش

در حال حاضر جنبشی در میان برخی از عکاسان به وجود آمده است که با استفاده از ایرادهای دوربین‌های فیلم ارزان قیمت، اثر هنری خلق می‌کنند. به عنوان مثال محصول مورد علاقه آها دوربین‌های فیلم یکبار مصرف هستند که به دلیل مشکلات عدیده‌شان، نتیجه متفاوت و گاهی بسیار جذاب ارائه می‌کنند.

به خاطر ایرادهایش

۱۲ . به دلیل مرموز بودن فیلم

وقتی عکس دیجیتال می‌گیرید، به محض ثبت عکس آن را در نمایشگر دوربین می‌بینید. اما یکی از جذابیت‌های عکاسی فیلم، در نداشتن همین قابلیت است.وقتی با فیلم عکس ثبت می‌کنید باید صبر کنید تا فیلم ظهور شود و چاپ شود تا نتیجه کار مشخص شود.

به دلیل مرموز بودن فیلم

تصور کنید در مسافرت هستید. باید صبر کنید تا از مسافرت برگردید و فیلم خود را به عکاسی بدهید و بعد از آن هم مدتی صبر کنید تا عکاسی عکس‌های چاپ شده شما را تحویل دهد. این فاصله و نهایتاً دیدن نتیجه کار بسیار جذاب و دلچسب است که گاهی شما را شگفت زده می‌کند.

 


منابع

۱٫http://fa.wikipedia.org

۲٫ http://forum.avastarco.com

۳٫ http://www.kingit.ir

۴٫ http://farnet.ir

الگوریتم کلونی مورچگان در رتبه دوم پر اهمیت‌ترین الگوریتم‌ها، در دسته الگوریتم‌های تکاملی قرار می‌گیرد. رفتار بیولوژیکی مورچه برای پیدا کردن غذا نقطه شروع شبیه سازی مصنوعی ما است.

الگوریتم‌های تکاملی یک جهش در زمینه هوش مصنوعی به حساب می‌آید. الگوریتم ژنتیک، اولین الگوریتم تکاملی ارائه شده بود. ژنتیک در کنار قدیمی‌ترین بودن همچنان به عنوان پیشتاز تکامل نیز به حساب می‌آید.

الگوریتم کلونی مورچگان یا (ACO) در رتبه دوم از نظر مصرف قرار دارد. بهتر است ساختار آن را با تشریح مدل بیولوژیکی آغاز کنیم.

مورچه‌ها به مانند پرندگان، زنبور عسل و .. برای پیدا کردن غذا به صورت گروهی حرکت می‌کنند. اصطلاحا به این نوع رفتار هوش جمعی گفته می‌شود. هوش جمعی به این منظور است که تمام تصمیمات مسیریابی و جمع آوری آذوقه از یک مورچه به مورچه دیگر انتقال پیدا می‌کند. تعداد مورچه‌ها در یک کلونی می‌تواند به ۳۰ میلیون برسد!! و هدف تک تک اعضای آن به بقای کلونی باز ‌می‌گردد. غیر از پیدا کردن غذا، تقسیم کار، ساماندهی گورستان و مراقبت از فرزندان نیز در بین کلونی مورچگان مبحثی رایج است.

رفتار جستجو گرانه مورچه‌ها

جالب است بدانید که مورچه‌ها موجوداتی کور، بی‌حافظه و بسیار کم هوش هستند. ولی با این حال همیشه بهینه‌ترین و کوتاه‌ترین مسیر از لانه تا محل غذا را پیدا می‌کنند. ارتباط این مورچه‌ها با یکدیگر از طریق ماده شیمیایی فرومون است. زمانی که مورچه از یک مسیر حرکت می‌کند بر روی زمین فرومون ترشح می‌کند و این باعث می‌شود که مورچه‌های بعدی به دنبال او حرکت کنند. فرومون ها دارای غلظت هستند که طی واحد زمان تبخیر می‌شوند، پس هر چه غلظت فرومون بیشتر باشد مورچه می‌فهمد که این مسیر جدیدتر است. به نحوی می‌توان این غلظت را به عنوان یک فیدبک در نظر گرفت که هر چه غلیظ‌تر باشد امتیاز بالاتری دارد.

حال با توضیحات بالا یک سوال مهم پیش می‌آید: فرض کنید یک مورچه که به عنوان اولین مورچه است، در مسیری حرکت کرده و بقیه مورچه‌ها نیز به دنبال او راه افتاده‌اند. اگر در مسیر حرکت آن غذا پیدا نشود، آن زمان تصمیم چیست؟ طبق این فرضیه هیچ وقت مسیرهای جدید اکتشاف نمی‌شوند و حرکت به یک حلقه بدون پایان تبدیل می‌شود.!

شاید جالب باشد بدانید که بعضی از مورچه‌ها در واقع جوانان اکتشاف‌گری هستند که توجهی به میزان فرومون نمی‌کنند و اهمیتی برای‌شان ندارد که دیگران از چه مسیری رفتند. البته شاید این اتفاق ناشی از هوش کم‌شان باشد.

 

الگوريتم های بهینه سازی کلونی مورچگان

تفاوت مورچه‌های واقعی و مورچه‌های مصنوعی

  • حالت درونی: حافظه‌ای از فعاليت های قبلی مورچه‌ها  (در صورتی که در مورچه‌های واقعی این نوع حافظه وجود ندارد).
  • فرومون مصنوعی: تابعي از کيفيت پاسخ پيدا شده.
  • موانع مصنوعی: تغییر دادن جزئیات مسئله برای بررسی الگوریتم و رسیدن به جواب‌های متنوع.
  • حیات در محیط گسسته: مورچه‌های واقعی نمی‌توانند جدا از  کلونی به حیات خود ادامه دهند.

مدل تصادفی:

احتمال اینکه مورچه بعدی مسیر A را انتخاب کند:

 

 

 

nA(t) و nB(t) تعداد مورچه هایی که در زمان t در مسیر A و B قرار دارند.

c: درجه جذب برای یک مسیر ناشناخته هر چه c بزرگتر باشد به معنی مقدار فرومون بیشتر برای عدم انتخاب مسیر تصادفی است.

a: بایاس به سمت فرومون به جا مانده در روند تصمیم گیری.

ساختار کلی الگوریتم کلونی مورچگان را باهم بررسی کردیم. در طی چند سال گذشته بهینه‌سازی‌های زیادی بر روی این الگوریتم انجام شد، که از انواع آن‌ها می‌توان به الگوریتم‌های زیر اشاره کرد:

SACO: Simple Ant Colony Optimization

ACOA: Ant Colony Optimization Algorithms

AS: Ant System

Elitist AS: Elitist Ant System

ACS: Ant Colony System

Max-Min AS

و …

منبع


الگوریتم کلونی مورچه ها در هوش مصنوعی

 در این مقاله بر آن شدیم تا شرح مختصری بر الگوریتم معروف کلونی مورچه ها که یکی از الگوریتم های پرکاربرد پردازش تکاملی در هوش مصنوعی است داشته باشیم و از میان کاربردهای بی شماری که این الگوریتم در علوم مختلف دارد به چند کاربرد نیز اشاره کنیم.

بهینه سازی کلونی مورچه ها یا Ant Colony Optimization و به اختصار (ACO)، که در سال ۱۹۹۲ توسط مارکو دوریگو (Marco Dorigo) و در رساله دکتری وی مطرح شد، یکی از بارزترین نمونه ها برای روش های هوش جمعی است. این الگوریتم از روی رفتار جمعی مورچه ها الهام گرفته شده است. مورچه ها با همکاری یکدیگر، کوتاه ترین مسیر را میان لانه و منابع غذایی پیدا می کنند تا بتوانند در کمترین زمان مواد غذایی را به لانه منتقل کنند. هیچ کدام از مورچه ها، به تنهایی قادر به انجام چنین کاری نیستند، اما با همکاری و پیروی از چند اصل ساده، بهترین راه را پیدا می کنند. الگوریتم مورچه ها، یک مثال بارز از هوش جمعی هستند که در آن عامل هایی که قابلیت چندان بالایی ندارند، در کنار هم و با همکاری یکدیگر می توانند نتایج بسیار خوبی به دست بیاورند.

در قسمت اول مورچه ها روی یک مسیر مستقیمی که از آشیانه به غذا وصل می شود حرکت می کنند در این مسیر از خود ماده ای به نام فرمن ترشح می کنند. وقتی که یک مانع در سر راهشان ایجاد می شود مسیر حرکت قطع شده و به دنبال یک راه حل اکتشافی برای حل مشکل خود می گردند. مورچه هایی که بالای مانع هستند نمی توانند مسیر حرکت را پیدا کنند زیرا مسیر فرمن را گم کرده اند به همین دلیل این احتمال وجود دارد که به سمت راست حرکت کنند یا به چپ. اما مورچه هایی که بر حسب تصادف مسیر کوتاهتر را انتخاب کرده اند زودتر می توانند این اتصال بین فرمن ها را فراهم کنند. به همین دلیل مسیر کوتاه تر می تواند سریع تر از فرمن پر شود و مورچه های بیشتری را به سمت خود بکشد. این فیدبک مثبت می تواند بسیاری از مورچه ها را به سمت خود بکشد. در الگوریتم ACO ابتدا باید یک گراف بین مسیرهای حرکت غذا در نظر گرفت. در ابتدا یک مقدار فرمن اولیه به هر یک از اضلاع گراف نسبت داده می شود و یک مورچه را به صورت تصادفی در مکان جستجو قرار می دهند.

برای هر مورچه کارهای زیر باید انجام شود:

۱- قانون حرکت احتمالی: براساس این قانون مورچه را در فضای جستجو حرکت داده به این ترتیب راه حل مسئله ایجاد می شود
۲- ارزیابی بهترین: باید بهترین راه حلی که توسط این مورچه ایجاد شده را ارزیابی کرد
۳- به روز کردن فرمن: فرمن هر ضلع را با استفاده از تقویت یک راه حل خوب به روز می کنیم
۴-  دوباره به مرحله دوم برگشته و این کار را ادامه می دهیم تا به میزان فرمن دلخواه برسیم
يک رفتار پايه اي ساده در مورچه ها وجود دارد : آنها هنگام انتخاب بين دو مسير بصورت احتمالاتي (Statistical) مسيري را انتخاب مي کنند که فرمن بيشتري داشته باشد يا بعبارت ديگر مورچه هاي بيشتري  قبلا از آن عبور کرده باشند. حال می بینیم که همين تمهيد ساده چگونه منجر به پيدا کردن کوتاهترين مسير خواهد شد :
همانطور که در شکل مي بينيم مورچه ها روي مسير در حرکت اند (در دو جهت مخالف)
اگر در مسير مورچه ها مانعي قرار دهیم مورچه ها دو راه براي انتخاب کردن دارند.
اولين مورچه از A مي آيد و به C مي رسد، در مسير هيچ فرمني نمي بيند بنابراين براي مسير چپ و راست احتمال يکسان مي دهد و بطورتصادفي و احتمالاتي مسير CED  را انتخاب مي کند.
مورچه ها در حال برگشت و به مرور زمان يک اثر بيشتر فرمن را روي CED حس مي کنند و آنرا بطور احتمالي و تصادفي ( نه حتما و قطعا)  انتخاب مي کنند. در نهايت مسير CED  بعنوان مسير کوتاهتر برگزيده مي شود. در حقيقت چون طول مسير CED  کوتاهتر است زمان رفت و برگشت از آن هم کمتر مي شود و در نتيجه مورچه هاي بيشتري نسبت به مسير ديگر آنرا طي خواهند کرد چون فرمن بيشتري در آن وجود دارد.
نکته ديگر مسئله تبخير شدن فرمن بر جاي گذاشته شده است. برفرض اگر مانع در مسيرAB  برداشته شود و فرمن تبخير نشود مورچه ها همان مسير قبلي را طي خواهند کرد. ولي در حقيقت اين طور نيست. تبخير شدن فرمن و احتمال به مورچه ها امکان پيدا کردن مسير کوتاهتر جديد را مي دهند. تبخیر فرمون از ۳ جهت مفید است:

۱) باعث می‌شود مسیر جذابیت کمتری برای مورچه‌های بعدی داشته باشد. از آنجا که یک مورچه در بلند مدت راه های کوتاه‌تر را بیش تر می‌پیماید و تقویت می‌کند هر راهی بین خانه و غذا که کوتاه‌تر(بهتر) باشد بیشتر تقویت می‌شود و آنکه دورتر است کمتر،

۲) اگر فرمن اصلاً تبخیر نمی شد، مسیرهایی که چند بار طی می‌شدند، چنان بیش از حد جذاب می‌شدند که جستجوی تصادفی برای غذا را بسیار محدود می‌کردند،

۳) وقتی غذای انتهای یک مسیر جذاب تمام می‌شد رد باقی می‌ماند.

حل مسئله ی فروشنده دوره گرد با الگوریتم کلونی مورچه ها

همانطور که مي دانيم مسئله يافتن کوتاهترين مسير، يک مسئله بهينه سازيست که گاه حل آن بسيار دشوار است و گاه نيز بسيار زمانبر. بعنوان مثال مسئله فروشنده دوره گردTSP)) ، در اين مسئله فروشنده دوره گرد بايد از يک شهر شروع کرده، به شهرهاي ديگر برود و سپس به شهر مبدا بازگردد بطوريکه از هر شهر فقط يکبار عبور کند و کوتاهترين مسير را نيز طي کرده باشد. برای حل مسئله فروشنده سیار که باید از n شهر دیدن کند و از هر کدام فقط یکبار عبورکند نیز می توان از الگوریتم ACO استفاده کرد. مثلا اگر زوج مرتب (N,E) را در نظر بگیریم که N تعداد شهرها و E اضلاع گراف باشند و di,j فاصله اقلیدسی بین شهرهای i و j باشد و  b تعداد مورچه ها در شهر i و در زمان t، هریک از مورچه ها باید مراحل زیر را انجام دهد:

بصورت احتمالی به یکی از شهرها برود که این احتمال تابع فاصله تا شهر و میزان فرمن موجود در مسیر است. برای اینکه سفر مورچه معتبر باشد حق دیدن شهر را ندارد. وقتی سفر مورچه تمام شد از خود ماده ای دفع می کند. در هر n بار تکرار الگوریتم که به آن حلقه می گویند هر مورچه یک سفر کامل را انجام می دهد. فرمن بجا مانده از مورچه ها بزودي تبخير مي شود ولي در کوتاه مدت بعنوان رد  مورچه بر سطح زمين باقي مي ماند. همانطور که گفته شد «تبخير شدن فرمن» و «احتمال-تصادف» به مورچه ها امکان پيدا کردن کوتاهترين مسير را مي دهند. اين دو ويژگي باعث ايجاد انعطاف در حل هرگونه مسئله بهينه سازي مي شوند. مثلا در گراف شهرهاي مسئله فروشنده دوره گرد، اگر يکي از يالها (يا گره ها) حذف شود الگوريتم اين توانايي را دارد تا به سرعت مسير بهينه را با توجه به شرايط جديد پيدا کند. به اين ترتيب که اگر يال (يا گره اي) حذف شود ديگر لازم نيست که الگوريتم از ابتدا مسئله را حل کند بلکه از جايي که مسئله حل  شده تا محل حذف يال (يا گره) هنوز بهترين مسير را داريم، از اين به بعد مورچه ها مي توانند پس از مدت کوتاهي مسير بهينه(کوتاهترين) را بيابند.

کاربردهای الگوریتم کلونی مورچه ها

از کاربردهايACO  مي توان به بهينه کردن هر مسئله اي که نياز به يافتن کوتاهترين مسير دارد ، اشاره نمود مانند :
۱٫ مسير يابي داخل شهري و بين شهري
۲٫  مسير يابي بين پست هاي شبکه هاي توزيع برق ولتاژ بالا
۳٫ مسير يابي شبکه هاي کامپيوتري

برخی از کاربردهای الگوریتم کلونی مورچه ها

مسيريابي شبکه‌هاي کامپيوتري با استفاده از ACO:

اطلاعات بر روي شبکه بصورت بسته هاي اطلاعاتي کوچکي (Packet) منتقل مي شوند. هر يک از اين بسته ها بر روي شبکه در طي مسير از مبدا تا مقصد بايد از گره هاي زيادي که مسيرياب (Router) نام دارند عبور مي کنند. در داخل هر مسيرياب جدولي قرار دارد تا بهترين و کوتاهترين مسير بعدي تا مقصد از طريق آن مشخص مي شود، بنابر اين بسته هاي اطلاعاتي حين گذر از مسيرياب ها با توجه به محتويات اين جداول عبور داده مي شوند. روش ACR : Ant Colony Routering پيشنهاد شده که بر اساس ايده کلونی مورچه به بهينه سازي جداول مي‌پردازد و در واقع به هر مسيري با توجه به بهينگي آن امتياز مي دهد. استفاده از ACR به اين منظور داراي برتري نسبت به ساير روش هاست که با طبيعت ديناميک شبکه سازگاري دارد، زيرا به عنوان مثال ممکن است مسيري پر ترافيک شود يا حتي مسير يابي (Router) از کار افتاده باشد و بدليل انعطاف پذيري که ACO در برابر اين تغييرات دارد همواره بهترين راه حل بعدي را در دسترس قرار مي دهد.

استفاده پژوهشگران از الگوي کلونی مورچه ها جهت اداره ترافيک

پژوهشگران سوييسي براي تهيه نرم افزاري جهت اداره ترافيک و شبکه هاي جاده اي از الگوي کلونی مورچه ها استفاده کرده اند. با کمک الگوریتم کلونی مورچه ها نرم افزاري تهیه شده که از آن براي اداره ترافيک جاده اي استفاده می شود. به اين ترتيب مي توان کوتاهترين مسير را بين چند شهر تشخيص داد.در اين نرم افراز فرايند ترددهاي يک کاميون براي تحويل بار به مشتريانش به مسير يک مورچه تشبيه مي شود و اين فرايند با توجه به تحولات غيرمنتظره ممکن است تغيير کند. با اين روش بهينه سازي بر پايه رفتار مورچه ها، یک شرکت حمل و نقل مي تواند مسير تحويل بارهايش را در مدت زمان پانزده دقيقه انجام دهد. دهها هزار خودرو مي توانند با اين نرم افزار مسير خود را بهينه سازي کنند .

حل مسائل زمانبندي پروژه ها با منابع محدود با استفاده از الگوريتم مورچگان

مساله زمانبندي پروژه ها با منابع محدود (RCPSP) درگير يافتن توالي مناسبي براي انجام فعاليتهاي يك پروژه است به نحوي كه محدوديت هاي تقدم و و تاخر شبكه پروژه و انواع مختلف محدوديتهاي منبعي موجود در پروژه به طور همزمان ارضاء شوند و معيار سنجش معيني از جمله زمان انجام پروژه، هزينه انجام، تعداد فعاليتهاي تاخيردار و غيره بهينه گردند. RCPSP  مساله اي NP-hard به شمار مي آيد و اهميت اين مساله در ابعاد تئوري و عملي باعث شده است كه تاكنون رويكردهاي ابتكاري و يا فراابتكاري جهت حل اين مساله ارائه شود. رويكردي بر اساس بهينه سازي توسط كلوني مورچگان براي حل مساله زمانبندي پروژه ها با منابع محدود ارائه شده است . از جمله تفاوتهاي اصلي رويكرد ارائه شده  با این شیوه قانون انتخاب احتمالات به صورت نوين، تغيير پارامترهاي الگوريتم به صورت پويا، جلوگيري از بروز رفتارهاي نامناسب الگوريتم در تكرارهاي بالا و تعيين رفتار كلي الگوريتم در تكرارهاي بالا می باشد.

كاربرد الگوريتم مورچه در بهينه سازي شبكه هاي توزيع آب

بكارگيري الگوريتم مورچه همانند ساير روشهاي بهينه سازي تكاملي، نيازمند تعدادي پارامتر كنترل كننده ميباشد. اين پارامترها كه اغلب به كمك آناليز حساسيت تعيين مي شوند، نقش تعيين كننده اي در عملكرد روش دارند. علاوه بر اين پارامترها بايد از ضريب جريمه نيز براي مسايل بهينه سازي مقيد استفاده كرد. در اين کاربرد از الگوريتم مورچه اي با كمترين تعداد پارامترهاي كنترل كننده، براي بهينه سازي شبكه هاي توزيع آب استفاده شده است.

الگوريتم مورچه اي براي طراحي مسير حركت باربران خودكار در سيستم تك حلقه

در این کاربرد هدف تعیین کوتاه ترین حلقه برای یک بابر خودکار در چیدمان کارخانه به نحوی است که با هر دپارتمان لااقل یک ضلع مشترک داشته باشد. برای این منظور در ابتدا با استفاده از خواص مسئله آن را به مسئله ای معادل نظریه گراف تبدیل کرده و سپس با به کارگیری الگوریتم کلونی مورچه ها مسئله حل شده است. در روش های مسیریابی سیستم تک حلقه این روش به خوبی عمل کرده است.

استفاده از الگوريتمaco  درطراحي شبكه هاي توزيع شعاعي

در اینجا از الگوريتم کلونی مورچه ها در طراحي بهينه شبكه هاي توزيع شعاعي كه در آنها مسير تغذيه مشخص است، استفاده مي شود. اين الگوريتم ضمن ارائه ميزان نفوذ هر يك از سطوح ولتاژ در شبكه مورد مطالعه، ظرفيت بهينه ترانسفورماتور ها و سطح مقطع بهينه فيدرها را در هر يك از سطوح ولتاژي ارائه مي نمايد. الگوريتم فوق بر روي يك شبكه نمونه اجرا شده و نتايج آن نشانه برتري روش ارائه شده نسبت به روش الگوريتم pso و الگوريتم سطح تغذيه است. نقطه قوت اين الگوريتم سرعت بالا، يعني بيشتر از ۲۴۰ برابر الگوريتم تعيين سطح تغذيه و بيش از ۱۸ برابر الگوريتم pso و همچنين كاهش۱۰ درصدي (بطور متوسط) قيمت نهايي در مقايسه با ديگر الگوريتم هاي موجود به سبب اضافه كردن ظرفيت ترانسفورماتور ها به عنوان متغير فضاي جستجو مي باشد.

ارايه يک مدل ابتکاري مبتني بر سيستم اجتماع مورچه ها براي حل مسئله زمان بندي حركت قطار

در اينجا با توسعه الگوريتم فوق ابتکاري سيستم اجتماع مورچه ها (acs) الگوريتمي براي زمان بندي حركت قطار معرفي شده است. ابتدا نوعي از مسئله زمان بندي حركت قطار در قالب يک برنامه ريزي رياضي مدلسازي و سپس الگوريتمي مبتني بر acs براي حل آن پيشنهاد شده است. با اين فرض که هر قطار در مسئله زمان بندي حرکت قطار معادل يك شهر در مسئله فروشنده دوره گرد (tsp) باشد، acs  بر روي گراف مسئله tsp، توالي حركت قطارها را مشخص مي کند. بر اساس اين توالي و رفع تلاقي در برخورد قطارها، زمان بندي حرکت مشخص خواهد شد.

بررسی پارامترهای الگوریتم AntNet

تنوع زیادی در پروتکلها و الگوریتم های مسیریابی برای ارتباطات شبکه ای وجود دارد. در مسیریابی سنتی جداول مسیریابی به واسطه تبادل اطلاعات مسیریابی بین مسیریابها به روز می شوند. الگوریتم هایی که با الهام از کلونی مورچه ها ارائه شده از عاملهای موبایل در مسیریابی شبکه ها استفاده می کنند. در این الگوریتم ها مسیریابی بصورت hop by hop و بر اساس خاصیت stigmergic در کلونی مورچه ها انجام می شود. stigmergicشکلی از ارتباط غیر مستقیم است که به وسیله تاثیر روی محیط انجام می شود. به این صورت که عامل ها (مورچه ها) در شبکه حرکت می کنند و جداول مسیر یابی را به روز می کنند.
منبع

الگوریتم کلونی مورچه ها قسمت ۱
الگوریتم کلونی مورچه ها قسمت ۲
الگوریتم کلونی مورچه ها قسمت ۳

ویژگیهای یک روبات

یک روبات دارای سه مشخصه زیر است
۱-داری حرکت وپویایی است
۲-قابلیت برنامه ریزی جهت انجام کارهای مختلف را دارد
۳-بعد از اینکه برنامه ریزی شد.قابلیت انجام وظایفش را به صورت خودکار دارد.
ممکن است روزی فرا برسد که روباتها جای انسانها را در انجام کارها بگیرند.
حتی بعضی از آنها ممکن است به صورت
محافظ شخصی از جان انسانهادر مقابل خطرات احتمالی حفاظت کنند.

آناتومی اندام روبات های شبیه انسان

در سال ۱۹۵۰ دانشمندان تصمیم گرفتند.شکلی از رباتهای دو پارا درست کنند.که از لحاظ فیزیکی شبیه انسان باشند.این گونه روباتها متشکل از دو بازو دو پا هستند.که دستها و پاها به صورت متقارن وشبیه بدن انسان در سمت راست وچپ ربات قرار گرفته اند.برای انجام چنین کاری آنها می بایست در ابتدا آناتومی بدن خود را می شناختند.آنها معتقد بودن که انسانها طی میلیونها سال تکامل یافته اند.،تا اینکه امروزه قادرند انواع مختلفی از کارها را انجام دهند.اگر از مردم راجع به روباتهای شبیه انسان سوال کنید.آنها در اولین وهله به یاد فیلم پلیس آهنی می افتند.شما نیز می توانید با استفاده از کاغذهای استوانه ای و تک های چوب وچسب شکلی مانند زیر درست کنید.

حرکت در روبات

هنگامیکه شما راجع به مطلبی فکر می کنید و برای آن دنبال پاسخ می گردید.می توانید جواب خود را در طبیعت بگیرید.به حیواناتی که اطراف ما هستند.،و مانند ما می توانند در چهار جهت حرکت کنند.دقت کنید.به طور مثال به حرکت فیل توجه کنید.مفاصلی که در پاها وجود دارند.سبب حرکت پاها به سمت عقب،جلو، چپ و راست می شوند
هنگامکه این حیوان حرکت می کند وزن خود را بر روی پا هایش تقسیم میکند.بنابراین این امکان را دارد که تعادلش را حفظ کند و بر روی زمین نیافتد.در روباتها نیز همین مسئله وجود دارد اگر یکی از پاهای آن در هوا قرار بگیرد روبات متوقف می شود.واین امکان وجود دارد بر روی زمین بیافتد.به حرکت مورجه ها دقت کنید.این موجود ۶ پا دارد. در هنگام حرکت به سمت جلو سه پایش را به سمت جلو وسه پای دیگرش را در همان موقعیت به سمت عقب فشار میدهد .دو پا از یک طرف ویک پا از طرف دیگرهمواره کار مشترکی را انجام می دهند. واین کار سبب حرکت مورچه به سمت جلو می شود.
حشرات بدلیل داشتن پاهای بیشتر وفرم پاها راحتر از حیوانات چهار پا می توانند تعادل خود را در حرکت حفظ کنند.بهمین دلیل رباتهای شبیه حشرات بیشتر از روباتهایی شبیه سگ و گربه ساخته شده اند.

لگو روبات(lego robot)

برای شروع به ساخت روبات بهتر است .،که با لگو ها ونحوه اسمبل کردن آنها آشنا شوید.لگوها ایده های خوبی در ساخت روبات به شما می دهند.بسیاری از روباتهایی که ساخته شده اند.حشره،حیوان،انسان نیستند.بلکه آنها لگو هستند.شما می توانید بدنه روبات خود را بوسیله لگوها بسازید.و مدارات الکترونیک را در آن جا سازی کنید.
بیشتر ماشینهایی که وجود دارند از چهار چرخ تشکیل شده اند.دو چرخ جلویی دارای چرخش زاویه ای هستند.،و دو چرخ عقبی در جای خود ثابت هستند.،وتنها میچرخند،حرکت به سمت راست،جلو و عقب را چرخهای جلویی تعیین می کنند.در برخی از ماشینها هر چهار چرخ دارای این وضعیت هستند.از این موارد در ساخت لگو روباتها شبیه ماشین استفاده می شود.برخی از ماشینهای پیشرفته از راه دور کنترل می شوند(remote control) که این مسئله را براحتی می توان در روباتها بست وتوسعه داد.
برای ساخت یک لگو ماشین احتیاج به چهار چرخ پلاستیکی و دو میله تحت عنوان محور احتیاج دارید.شاید بتوانید این قطعات را براحتی در یک ماشین اسباب بازی پیدا کنید.برخی از طراحان روبات به جای چهار چرخ از سه چرخ استفاده می کنند.در این حالت عموما دو چرخ ثابت وتنها در جای خود می چرخند و تنها یک چرخ دارای حرکت آزاد است.نوع دو چرخ آن نیز وجود دارد.در این حالت هر دوچرخ دارای حرکت آزاد زاویه ای هستند.
برای حل مشکل تعادل روباتها در هنگام چرخش از چهار چرخ استفاده می شود. در هر طرف دوچرخ وجود دارد.که چرخهای در هر سمت بوسیله تسمه یا نواری پلاستیکی بهم متصل می شوند.
کلمه ربات توسط Karel Capek نویسنده نمایشنامه R.U.R (روبات‌های جهانی روسیه) در سال ۱۹۲۱ ابداع شد. ریشه این کلمه، کلمه چک اسلواکی(robotnic) به معنی کارگر می‌باشد.
در نمایشنامه وی نمونه ماشین، بعد از انسان بدون دارا بودن نقاط ضعف معمولی او، بیشترین قدرت را داشت و در پایان نمایش این ماشین برای مبارزه علیه سازندگان خود استفاده شد.
البته پیش از آن یونانیان مجسمه متحرکی ساخته بودند که نمونه اولیه چیزی بوده که ما امروزه ربات می‌نامیم.
امروزه معمولاً کلمه ربات به معنی هر ماشین ساخت بشر که بتواند کار یا عملی که به‌طور طبیعی توسط انسان انجام می‌شود را انجام دهد، استفاده می‌شود.

ربات‌ها چه کارهایی انجام می‌دهند؟

بیشتر ربات‌ها امروزه در کارخانه‌ها برای ساخت محصولاتی مانند اتومبیل؛ الکترونیک و همچنین برای اکتشافات زیرآب یا در سیارات دیگر مورد استفاده قرار می‌گیرد.

ربات‌ها از چه ساخته می‌شوند؟

ربات‌ها دارای سه قسمت اصلی هستند:
* مغز که معمولاً یک کامپیوتر است.
* محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخ‌ها، چرخ دنده‌ها و …
* سنسور که می‌تواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.
با این سه قسمت، یک ربات می‌تواند با اثرپذیری و اثرگذاری در محیط کاربردی‌تر شود.

تأثیر رباتیک در جامعه:

علم رباتیک در اصل در صنعت به‌کار می‌رود و ما تأثیر آن را در محصولاتی که هر روزه استفاده می‌کنیم، می‌بینیم. که این تأثیرات معمولاً در محصولات ارزان‌تر دیده می‌‌شود.
ربات‌ها معمولاً در مواردی استفاده می‌شوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خط فعالیت نمایند مثل اکتشافات در مکان‌های خطرناک مانند آتش‌فشان‌ها که می‌توان بدون به خطر انداختن انسان‌ها انجام داد.

مشکلات رباتیک:

البته مشکلاتی هم هست. یک ربات مانند هر ماشین دیگری، می‌تواند بشکند یا به هر علتی خراب شود. ضمناً آن‌ها ماشین‌های قدرتمندی هستند که به ما اجازه می‌دهند کارهای معینی را کنترل کنیم.
خوشبختانه خرابی ربات‌ها بسیار نادر است زیرا سیستم رباتیک با مشخصه‌های امنیتی زیادی طراحی می‌شود که می‌تواند آسیب‌ آن‌ها را محدود ‌کند.
در این حوزه نیز مشکلاتی در رابطه با انسان‌های شرور و استفاده از ربات‌ها برای مقاصد شیطانی داریم. مطمئناً ربات‌ها می‌توانند در جنگ‌های آینده استفاده شوند. این می‌تواند هم خوب و هم بد باشد. اگر انسان‌ها اعمال خشونت آمیز را با فرستادن ماشین‌ها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسان‌ها به جنگ با یکدیگر باشد. ربات‌ها می‌توانند برای دفاع از یک کشور در مقابل حملات استفاده می‌شوند تا تلفات انسانی را کاهش دهد. آیا جنگ‌های آینده می‌تواند فقط یک بازی ویدئویی باشد که ربات‌ها را کنترل می‌کند؟

مزایای رباتیک:

مزایا کاملاً آشکار است. معمولاً یک ربات می‌تواند کارهایی که ما انسان‌ها می‌خواهیم انجام دهیم را ارزان‌تر انجام‌ دهد. علاوه بر این ربات‌ها می‌توانند کارهای خطرناک مانند نظارت بر تأسیسات انرژی هسته‌ای یا کاوش یک آتش‌فشان را انجام دهند. ربات‌ها می‌توانند کارها را دقیقتر از انسان‌ها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت ‌بخشند. ربات‌ها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند.

تاثیرات شغلی:

بسیاری از مردم از اینکه ربات‌ها تعداد شغل‌ها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیه‌ای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت‌ تکنولوژی مانند ربات‌ها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهره‌ورتر می‌شود.

قوانین سه‌گانه رباتیک:

ایزاک آسیموف نویسنده داستان‌های علمی تخیلی قوانین سه‌گانه رباتیک را به صورت زیر تعریف‌کرده است:
۱ـ یک ربات نباید به هستی انسان آسیب برساند یا به واسطه بی‌تحرکی، زندگی یک انسان را به مخاطره بیاندازد.
۲ـ یک ربات باید از دستوراتی که توسط انسان به او داده می‌شود، اطاعت کند؛ جز در مواردی که با قانون یکم در تضاد هستند.
۳ـ یک ربات باید تا جایی‌که با قوانین یکم و سوم در تضاد نباشد از خود محافظت کند.

آینده رباتیک:

جمعیت ربات‌ها به سرعت در حال افزایش است. این رشد توسط ژاپنی‌ها که ربات‌های آن‌ها تقریباً دو برابر تعداد ربات‌های آمریکا است، هدایت شده است.
همه ارزیابی‌ها بر این نکته تأکید دارد که ربات‌ها نقش فزاینده‌ای در جوامع مدرن ایفا خواهند کرد. آن ها به انجام کارهای خطرناک، تکراری، پر هزینه و دقیق ادامه می‌دهند تا انسان‌ها را از انجام آن‌ها باز دارند.

ربات امدادگر

یکی از راهکارهایی که برای نجات مصدومین زلزله استفاده می شود، به کاربستن رباتیک و علوم کامپیوتر در عملیات امداد و نجات است. از طریق این فناوری‌ها می‌توان به مصدومین گرفتار در زیر آوار دسترسی پیدا کرده و جان آن‌ها را نجات داد
این ربوتها به گونه‌ای طراحی شده است که بتوان مسیر خود را در شکاف‌های باریک و از میان آوار به‌جا مانده از ساختمان بیابد و در لا‌به‌لای آن‌ها به جستجوی مصدومین حادثه بپردازد. پیکره‌ی این رباتها به یک دوربین و یک میکروفون برای دریافت داده‌هایی از میان ویرانی‌ها مجهز شده است. به علاوه یک حسگر حرارتی نیز به تجهیزات این ربوت ها افزوده شده، تا بتواند حرارت بدن مصدوم را دریافته و موقعیت او را بیابد. این حسگر، این امکان را نیز فراهم می‌سازد که حتی اگر در زیر آوار منبع نوری نیز وجود نداشت و مصدومین در تاریکی گرفتار شده بودند، باز هم فرصت یافته شدن آن‌ها وجود داشته باشد. طراحی منعطف این ربوتها برخی توانمندی‌های مختص محیط‌های دچار سانحه را به آن افزوده است، اگر در شرایطی این ربوتها با مانعی در زیر آوار برخورد کند و به سبب این برخورد تعادل خود را از دست بدهد و یا از ارتفاعی، فرو بیفتد، خواهد توانست با چرخش پیکره‌ی خود مجدداً به وضعیت متعادل و مناسب برای حرکت بازگردد.

مباني رباتيك

ربات ها ماشين هايي هستند كه به تقليد رفتار انسان ها يا حيوانات مي پردازند . انسان ها داراي جسم مي باشند و از ماهيچه براي حركت بدن ، حسگر براي دريافت اطلاعات محيط ، قدرت براي فعال كردن ماهيچه ها ، مغز براي پردازش اطلاعات حسگرها و دستور به ماهيچه ها و ويژگي هاي نامشهود ديگر مانند هوش و روحيه برخوردارند . به طور مشابه ربات ها نيز از ساختار قابل حركت ، موتورها ، حسگرهايي براي مشاهده محيط ، فعال ساز براي كنترل حركت ، منبع تغذيه و پردازنده / كامپيوتر براي كنترل رفتار و اجزاي خود برخوردار مي باشند . ربات هاي صنعتي بازوها يا ماشين هاي خودكار مكانيكي هستند كه توسط كامپيوتر كنترل شده و از آنها در خطوط مونتاژ كارخانه ها استفاده مي شود . وظايف آنها بازه وسيعي را از اتصال اجزاي بدنه اتومبيل تا قرار دادن يك قطعه بسيار كوچك در يك دستگاه الكترونيكي در بر مي گيرد .
يك ربات صنعتي كه از شش مفصل برخوردار است ، شباهت بسيار زيادي به بازوي انسان دارد . اين شش اتصال در واقع معادل شانه ، آرنج و مچ هستند . هر كدام از اين اتصالات توسط يك موتور DC/AC كنترل مي شوند . خود اين موتورها توسط سيگنال هايي كه توسط كابل منتقل مي شود ، كنترل مي گردند .
كامپيوتر كنترلي ربات شامل برنامه هايي است كه رفتار هر موتور را كنترل مي كند و بدين ترتيب ربات عمل مورد نياز را انجام مي دهد . براي حركت ربات ، اين رايانه ، موتورها و دريچه هاي مرتبط را فعال مي كند . ربات ها قابل برنامه ريزي جديد بوده و مي توان با برنامه ريزي جديد رفتار متفاوتي را از آنها انتظار داشت .
برنامه يك ربات جوشكاري حاوي دستورات لازم در زمينه ميزان جريان برق و اعمال جريان براي المان جوشكاري ربات است تا بدين ترتيب بعنوان قطعات فلزي با قطرهاي مختلف را به هم جوش داد . حسگرهاي موجود ، اطلاعات محيطي را به صورت پسخورد در اختيار كامپيوتر كنترلي قرار مي دهند و آنها را قادر مي سازند تا عمليات ربات را مطابق با شرايط محيطي تنظيم كنند . كامپيوترها سيگنال هاي فرمان را به ابزار رباتيك ارسال مي نمايند و بدين ترتيب عمليات كارخانه كنترل مي گردد .
مي توان ماشين هاي رباتيك را به گونه اي برنامه ريزي كرد كه وظايف مختلفي را انجام دهند و در نتيجه ربات ها مي توانند به منظور توليد محصولات مختلف ، مورد استفاده قرار گيرند . ربات هاي فوق در كارخانه هايي مورد استفاده قرار مي گيرند كه محصولات متنوعي را در دسته هاي كوچك توليد مي كنند و محصولات هر دسته با دسته ديگر فرق مي كند . ربات ها با سخت افزار فرآيند توليد ادغام مي شوند . پس از اينكه كار جاري خط توليد به پايان رسيد ، مي توان از اين ربات ها براي كار ديگر دوباره استفاده كرد .
خط توليدي كه در آن از ربات استفاده مي شود ، ممكن است فقط شش ماه دوام داشته باشد . پس از آن ، كارخانه به دليل تغيير محصول توليدي خود بايد خط توليد فوق را جمع آوري كند . از آنجايي كه مي توان ربات ها را براي انجام كارهاي مختلف برنامه ريزي كرد ، مي توان آنها را به راحتي از يك خط توليد جدا كرده و در جاي ديگر مورد استفاده قرار داد.
كارخانه موتورولا از دو ربات به طور همزمان براي مونتاژ قطعات الكترونيكي در دستگاه هاي راديويي خود استفاده مي كند . اين دو ربات دوازده كار پايه اي مانند قرار دادن قطعات الكترونيكي بر روي بوردهاي چاپي را بطور مشترك با هم انجام مي دهند . اين دو ربات به صورت جفت و دقيقا مانند دو بازوي يك انسان در خط مونتاژ كار مي كنند و كامپيوتر كنترل كننده با ارسال سيگنال هاي مناسب مانع از برخورد آنها باهم مي شود .

حواس انسان براي ربات ها :

تمركز طراحان بر شبيه سازي حواس انسان براي ربات ها است . ربات ها بايد بتوانند حسي از محيط پيرامون خود داشته باشند ( مشابه حواس انسان ) . آنها بايد بتوانند ببينند ، احساس كنند ، بشنوند ، بو بكشند و با انسان ها به زبان طبيعي صحبت كنند .رادارها ، دستگاههاي كاشف ، ميكروفن هاي جهت دار ، اسكنر هاي بدن و موارد مشابه قادر ند بهتر از اعضا ي بدن انسان عمل كنند ، ببينند و يا اشياء را شناسايي كنند . مشكل اصلي ، گردآوري اطلاعات نيست ، بلكه تفسير و درك آنهاست .
ساخت رباتي كه بتواند به سطح يك چاه نفت در دريا برود يا رباتي كه بتواند به يك راكتور هسته اي وارد شود ، بسيار متفاوت از رباتي است كه در آن لوله است . تصوير لوله تنها نشان دهنده جلبك هايي است كه به دور اتصالات جمع شده اند . اگر قرار است ربات تشخيص دهد كه مي تواند مشكل را حل كند يا نه ، بايد از هوش لازم براي رفع ابهام از تصوير و ايجاد يك تصوير واضح و روشن برخوردار باشد . ربات ها بايد اطلاعات مورد نياز را براي پاسخگويي به مسائل پيش آمده در جهان واقعي فراهم سازند . ربات ها بايد قادر به درك حوادث پيرامون خود باشند تا بتوانند بر آنها كنترل داشته باشند و گرنه ، داشتن حواس صرف براي گردآوري اطلاعات ، ارزشي نخواهد داشت . حواس آنها بايد پسخوري از اثرات رفتار انها بر جهان ، به آنها بدهد .

ربات هاي بيولوژيكي :

محققان به دنبال هوش هستند ، گرچه اين هوش لزوما به پيچيدگي مغز انسان كه از ميليارها نورون و تريليون ها اتصال برخوردار است نخواهد بود . گرچه بسياري از مناطق مغز انسان از ساختار يكنواختي برخوردارند ، ولي صدها منطقه در مغز وجود دارد كه از نظر معماري متمايز هستند . اين مساله سبب پيچيدگي شبيه سازي مغز انسان در ربات ها مي شود .
در مقايسه ، حشرات و موجودات دريايي از نورون هاي كمتري برخوردارند . مهندسان با استفاده از داده هاي رفتاري مي دانند كه چگونه بخش هاي مغز اين موجودات با هم در ارتباط هستند و همچنين از نحوه تعامل نورون هاي آنها به منظور انجام يك كار خاص مطلع هستند .
هوش مغز سوسك براي توسعه ربات هاي بيولوژيكي بكار گرفته شده است . حشرات در زمان حركت بالا ، زير با پيرامون موانع شش بازوي خود را كنترل مي كنند . ربات هاي شش بازويي مانند Lemur (مخففLimbed Excursion Mobile Utility Robot ) ” ربات با قدرت حركت عضوي ” از خصوصيات سيستم عصبي حشرات براي حركت در سطوح سخت و ناهموار به منظور گردآوري ، نمونه برداري و تحليل داده ها استفاده مي كنند .
ماهيچه ها مسبب حركت و دستكاري در مخلوقات هستند . فعال سازي هاي ربات ها در واقع شبيه ساز ماهيچه ها به شمار مي روند . فعال سازي هايي كه از پليمرهاي فعال شونده با جريان برق (EAP) استفاده مي كنند ، بيشترين شباهت را به ماهيچه هاي بيولوژيكي دارند . EAP ها در پاسخ به تحريك هاي الكتريكي تغيير شكل مي دهند .در صورتي كه به سيال هاي الكترورئولوژيك (ERF) مبتني بر EAP تحريك الكتريكي وارد شود ، چسبناك مي شوند . از ERF ها براي توسعه فعال سازي هاي مينياتوري كنترل شونده توسط جريان برق استفاده مي شود . نيروهايي كه در محيط هاي دور اعمال مي شوند ، سبب تغيير در ويسكوزيته ERF شده و بدين شكل خود را در اجزاي مكانيكي ربات نشان مي دهند .
از ربات هاي مبتني بر EAP در كاربردهاي پزشكي و فضايي استفاده مي شود . ربات ماهي اولين محصول تجاري است كه در آن از EAP استفاده شده است . اين ربات مي تواند بدون استفاده از موتور يا باتري و با استفاده القاء گرهاي موجود شنا كند .
EAP ها را ميتوان به شكل هاي مختلفي ساخت . از تركيب آنها با حسگرهاي MEMS ( سيستم ميكروالكترومكانيكي ) مي توان به فعال سازهاي هوشمند دست يافت . EAP واسطي است بين انسان و ماشين در واقع جايگزيني است براي حواس انسان . بعنوان مثال ، مي توان از EAP بعنوان واسط بين ربات و مغز انسان استفاده كرد . كلاوس پيترزانر از دانشگاه ساوت همپتون در انگلستان رباتي ساخته است كه توسط يك نمونه پرورش يافته و خاص از موجودات زنده ” كپك مانند” كنترل ميشود . اين سلول ها از نور دوري مي كنند .
يك نمونه ستاره اي شكل از اين سلول ها به يك ربات شش بازويي ربات متصل گرديده اند . تابش نور سفيد بر بخشي از ارگانيسم سلول سبب مرتعش شدن آن مي گردد . اين ارتعاشات به رايانه منتقل شده و بر اساس آن سيگنال هاي كنترلي براي حركت بازوها ارسال مي گردد . با تابش نور برروي بخش هاي مختلف ستاره ، بازوهاي متفاوتي را ميتوان حركت داد . با انجام اين كار به صورتي منظم و با قاعده ، ميتوان ربات را به راه انداخت .

منبع

ربات چیست؟ قسمت ۱
ربات چیست؟ قسمت ۲
ربات چیست؟ قسمت ۳
ربات چیست؟ قسمت ۴
ربات چیست؟ قسمت ۵
ربات چیست؟ قسمت ۶
ربات چیست؟ قسمت ۷
ربات چیست؟ قسمت ۸

پردازش تصاویر (به انگلیسی: Image processing) امروزه بیشتر به موضوع پردازش تصویر دیجیتال گفته می‌شود که شاخه‌ای از دانش رایانه است که با پردازش سیگنال دیجیتال که نماینده تصاویر برداشته شده با دوربین دیجیتال یا پویش شده توسط پویشگر هستند سر و کار دارد.

پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد(مانند چاپگر یا نمایشگر رایانه)است، در حالی که بینایی ماشین به روشهایی می‌پردازد که به کمک آنها می‌توان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.

در معنای خاص آن پردازش تصویر عبارتست از هر نوع پردازش سیگنال که ورودی یک تصویر است مثل عکس یا صحنه‌ای از یک فیلم.خروجی پردازشگر تصویر میتواند یک تصویر یا یک مجموعه از نشانهای ویژه یا متغیرهای مربوط به تصویر باشد.اغلب تکنیک‌های پردازش تصویر شامل برخورد با تصویر به عنوان یک سیگنال دو بعدی و بکاربستن تکنیک‌های استاندارد پردازش سیگنال روی آنها میشود. پردازش تصویر اغلب به پردازش دیجیتالی تصویر اشاره میکند ولی پردازش نوری و آنالوگ تصویر هم وجود دارند.این مقاله در مورد تکنیک‌های کلی است که برای همه آنها به کار میرود.

عملیات اصلی در پردازش تصویر
۱٫ تبدیلات هندسی: همانند تغییر اندازه، چرخش و…
۲٫ رنگ: همانند تغییر روشنایی، وضوح و یا تغییر فضای رنگ
۳٫ ترکیب تصاویر : ترکیب دو و یا چند تصویر
۴٫ فشرده سازی تصویر : کاهش حجم تصویر
۵٫ قطعه بندی تصویر : تجزیهٔ تصویر به قطعات با معنی
۶٫ تفاوت تصاویر : به دست آوردن تفاوت‌های تصویر
۷٫ میانگین گیری : به دست آوردن تصویر میانگین از دو تصویر

فشرده‌سازی تصاویر :
برای ذخیره‌سازی تصاویر باید حجم اطلاعات را تا جایی که ممکن است کاهش داد و اساس تمام روش‌های فشرده‌سازی کنار گذاردن بخش‌هایی از اطلاعات و داده‌ها است.

ضریب یا نسبت فشرده‌سازی است که میزان و در صد کنار گذاشتن اطلاعات را مشخص میکند. این روش ذخیره‌سازی و انتقال اطلاعات را آسان‌تر می‌کند و پهنای‌باند و فرکانس مورد نیاز کاهش می‌یابد.

امروزه روش‌هایی متعدد و پیشرفته برای فشرده‌سازی وجود دارد. فشرده‌سازی تصویر از این اصل مهم تبعیت می‌کند که چشم انسان حد فاصل دو عنصر تصویری نزدیک به هم را یکسان دیده و تمایز آنها را نمی‌تواند تشخیص دهد. همچنین اثر نور و تصویر برای مدت زمان معینی در چشم باقی مانده و از بین نمی‌رود که این ویژگی در ساخت تصاویر متحرک مورد توجه بوده‌است.

* روش JPEG
نام این فرمت در واقع مخفف کلمات JOINT PHOTOGRAPHIC EXPERT GROUP است. از این روش در فشرده‌سازی عکس و تصاویر گرافیکی ساکن استفاده میشود JPEG اولین و ساده‌ترین روش در فشرده‌سازی تصویر است به همین دلیل در ابتدا سعی شد برای فشرده‌سازی تصاویر متحرک مورد استفاده قرار گیرد. برای این منظور تصاویر به صورت فریم به فریم مانند عکس فشرده می‌شدند وبا ابداع روش MOTION JPEG برای ارتباط دادن این عکس‌ها به هم تلاش شد که با مشکلاتی همراه بود.

* روش MPEG
نام این فرمت مخفف عبارت MOVING PICTURE EXOERT GROUP است. این روش در ابتدای سال ۹۰ ابداع شد و در آن اطلاعات تصویر با سرعت حدود ۵/۱ مگابیت بر ثانیه انتقال پیدا میکرد که در تهیه تصاویر ویدئویی استفاده می‌شد. با این روش امکان ذخیره حدود ۶۵۰ مگابایت اطلاعات معادل حدود ۷۰ دقیقه تصویر متحرک در یک دیسک به وجود آمد. در MPEG بیت‌های اطلاعات به صورت سریال ارسال می‌شوند و به همراه آنها بیت‌های کنترل و هماهنگ‌کننده نیز ارسال میشوند که موقعیت و نحوه قرارگیری بیت‌های اطلاعاتی را برای انتقال و ثبت اطلاعات صدا و تصویر تعیین میکند.

* روش MP۳
MP۳ نیز روشی برای فشرده سازی اطلاعات صوتی به ویژه موسیقی است که از طریق آن حجم زیادی از اطلاعات صوتی در فضای نسبتاً کوچکی ذخیره میشود.

* روش MPEG۲
در روش MPEG۲ از ضریب فشرده‌سازی بالاتری استفاده میشود و امکان دسترسی به اطلاعات ۳ تا ۱۵ مگابیت بر ثانیه‌است از این روش در دی‌وی‌دی‌های امروزی استفاده می‌شود در اینجا نیز هر فریم تصویری شامل چندین سطر از اطلاعات دیجیتالی است.

* روش MPEG ۴
از این روش برای تجهیزاتی که با انتقال سریع یا کند اطلاعات سرو کار دارند استفاده میشود. این روش توانایی جبران خطا و ارائه تصویر با کیفیت بالا را دارد. مسئله خطا و جبران آن در مورد تلفن‌های همراه و کامپیوترهای خانگی و لپ‌تاپ‌ها و شبکه‌ها از اهمیت زیادی برخوردار است. در شبکه‌های کامپیوتری باید تصویر برای کاربرانی که از مودم‌های سریع یا کند استفاده می‌کنند به خوبی نمایش داده شود، در چنین حالتی روش MPEG ۴ مناسب است. از این روش در دوربین‌های تلویزیونی نیز استفاده میشود. ایده اصلی این روش تقسیم یک فریم ویدئویی به یک یا چند موضوع است که مطابق قاعده خاصی کنار هم قرار میگیرند مانند درختی که از روی برگ‌های آن بتوان به شاخه تنه یا ریشه آن دست یافت. هر برگ میتواند شامل یک موضوع صوتی یا تصویری باشد. هر کدام از این اجزا به صورت مجزا و جداگانه قابل کپی و یا انتقال هستند. این تکنیک را با آموزش زبان می‌توان مقایسه کرد.

همان‌طوری‌که در آموزش زبان کلمات به صورت مجزا و جداگانه قرار داده میشوند و ما با مرتب کردن آن جملات خاصی می‌سازیم و می‌توانیم در چند جمله، کلمات مشترک را فقط یک‌بار بنویسیم و هنگام مرتب کردن آن‌ها به کلمات مشترک رجوع کنیم، در اینجا هم هر یک از این اجزا یک موضوع خاص را مشخص می‌کند و ما می‌توانیم اجزا مشترک را فقط یک‌بار به کار ببریم و هنگام ساختن موضوع به آنها رجوع کنیم. هر یک از موضوعات هم می‌توانند با موضوعات دیگر ترکیب و مجموعه جدیدی را بوجود آورند. این مسئله باعث انعطاف‌پذیری و کاربرد فراوان روش MPEG۴ می‌شود. برای مثال به صحنه بازی تنیس توجه کنید. در یک بازی تنیس میتوان صحنه را به دو موضوع بازیکن و زمین بازی تقسیم کرد زمین بازی همواره ثابت است بنا بر این بعنوان یک موضوع ثابت همواره تکرار می‌شود ولی بازیکن همواره در حال حرکت است و چندین موضوع مختلف خواهد بود. این مسئله سبب کاهش پهنای باند اشغالی توسط تصاویر دیجیتالی میشود. توجه داشته باشید که علاوه بر سیگنال‌های مربوط به این موضوعات سیگنال‌های هماهنگ کننده‌ای هم وجود دارند که نحوه ترکیب و قرارگیری صحیح موضوعات را مشخص می‌کند.

تصاویر رقومی(دیجیتالی):
تصاویر سنجش شده که از تعداد زیادی مربعات کوچک(پیکسل) تشکیل شده‌اند. هر پیکسل دارای یک شماره رقمی(Digital Number) میباشد که بیانگر مقدار روشنایی آن پیکسل است. به این نوع تصاویر، تصاویر رستری هم میگویند.تصاویر رستری دارای سطر و ستون میاشند.

مقادیر پیکسلها:
مقدار انرژی مغناطیسی که یک تصویر رقومی به هنگام تصویر برداری کسب میکند، رقم‌های دوتایی(Digit binary) یا بیت ها(Bits) را تشکیل میدهند که از قوه صفر تا ۲ ارزش گذاری شده‌است.هر بیت، توان یک به قوه ۲ (۱بیت=۲۱)میباشد. حداکثر تعداد روشنایی بستگی به تعداد بیت‌ها دارد. بنابراین ۸ بیت یعنی ۲۵۶ شماره رقومی که دامنه‌ای از ۰ تا ۲۵۵ دارد.به همین دلیل است که وقتی شما تصویر رستری از گیرنده خاصی مانند TM را وارد [[نرم افزار]]ی میکنید تغییرات میزان روشنایی را بین ۰ تا ۲۵۵ نشان میدهد.

دقت تصویر:
دقت تصویر بستگی به شماره پیکسل‌ها دارد.با یک تصویر ۲ بیتی، حداکثر دامنه روشنایی ۲۲ یعنی ۴ میباشد که دامنه آن از ۰ تا ۳ تغییر میکند.در این حالت تصویر دقت (تفکیک پذیری لازم) را ندارد.تصویر ۸ بیتی حداکثر دامنه ۲۵۶ دارد و تغییرات آن بین ۰ تا ۲۵۵ است.که دقت بالاتری دارد

کاربرد پردازش تصویر در زمینه‌های مختلف:
امروزه با پیشرفت سیستمهای تصویر برداری و الگوریتمهای پردازش تصویر شاخه جدیدی در کنترل کیفیت و ابزار دقیق به وجود آمده‌است.و هر روز شاهد عرضه سیستمهای تصویری پیشرفته برای سنجش اندازه، کالیبراسیون، کنترل اتصالات مکانیکی، افزایش کیفیت تولیدو……..هستیم.

اتوماسیون صنعتی:
با استفاده از تکنیکهای پردازش تصویر می‌توان دگرگونی اساسی در خطوط تولید ایجاد کرد. بسیاری از پروسه‌های صنعتی که تا چند دهه پیش پیاده سازیشان دور از انتظار بود، هم اکنون با بهرگیری از پردازش هوشمند تصاویر به مرحله عمل رسیده‌اند. از جمله منافع کاربرد پردازش تصویر به شرح زیر است.

* افزایش سرعت و کیفیت تولی
* کاهش ضایعات
* اصلاح روند تولید
* گسترش کنترل کیفیت

کالیبراسیون و ابزار دقیق:
اندازه گیری دقیق و سنجش فواصل کوچک یکی از دقدقه‌های اصلی در صنایع حساس می‌باشد.دوربینهای با کیفیت امکان کالیبراسیون با دقت بسیار بالا در حد میکرون را فراهم آورده‌اند.

حمل و نقل:
* تشخیص شماره پلاک خودرو
* نرم افزار شمارش خودروهای عبوری از عرض خیابان

بی شک یکی از مؤثر ترین مولفه‌ها در مدیریت و برنامه ریزی دسترسی به آمار دقیق می‌باشد. درصورت وجود آمار دقیق و سریع می‌توان از روشهای کنترل بهینه استفاده کرد و بهره وری را افزایش داد. به عنوان مثال اگر آمار دقیقی از میزان مصرف یک محصول غذایی وجود داشته باشد با برنامه ریزی مناسب می‌توان زمینه تولید و عرضه اصولی آن را فراهم کرد. لذا احتمال نابسامانی در بازار و متضرر شدن کشاورز و مصرف کننده کاهش می‌یابد. چنان که بیان شد مهمترین فاکتور در برنامه ریزی دسترسی به آمار مناسب است اما تهیه آمار فرایند پیچیده و وقت گیر است و معمولا هزینه زیادی را در بر دارد. به عنوان مثال به دلایلی از جمله کنترل ترافیک یا کنترل میزان روشنایی خیابان باید خودروهای عبوری از خیابان شمارش شوند. این کار اگر به صورت دستی یا انسانی انجام شود، هزینه زیادی نیاز دارد، امکان سهل انگاری انسانی نیز وجود دارد پس استفاده از یک دستگاه مناسب که توانایی شمارش خودروهای عبوری را داشته باشد تنها گزینه ممکن است. با توجه به نیاز فوق نرم افزاری تهیه شده‌است که با استفاده از تصاویر گرفته شده از عرض خیابان خودروهای عبوری را تشخیص میدهد و تعداد آنها را شمارش می‌کند. این نرم افزار امکان استفاده در روز یا شب را دارا می‌باشد.

منبع


هنگامی که داده های سنجش از دور به فرمت رقومی(Digital) باشند،میتوان با استفاده از کامپیوتر ،پردازش و تجزیه و تحلیل های رقومیانجام داد.این پردازش برای افزایش کیفیت داده ها و تفسیر های چشمی انجام میگیرد.همچنین میتوان موضوع یا اطلاعات به خصوصی را از تصویر به دست آورد که همگی به صورت خودکار توسط کامپیوتر انجام میگیرد.

تصاویر آنالوگ:
تصاویری مانند عکس های هوایی که توسط سیستم هایعکس برداری (دوربین) به دست میآیند.از آنجایی که در این عکس ها از فیلم عکاسیاستفاده شده است،پس هیچ پردازشی نیاز ندارد.

 

تصویر آنالوگ (عکس هوایی که نیاز به اصلاح و پردازش ندارد)

تصاویر رقومی(دیجیتالی):
تصاویر سنجش شده که از تعداد زیادی مربعات کوچک(پیکسل) تشکیل شده اند.هر پیکسل دارای یک شماره رقمی(Digital Number) میباشد که بیانگر میزان روشنایی آن پیکسل است. به این نوع تصاویر ، تصاویر رستری هم میگویند.تصاویر رستری دارای سطر وستون میاشند.

تصویر بالا(رقومی) .پایین و سمت چپ(پیکسلها).سمت راست و پایین(شماره های هر پیکسلDNِ)

مقادیر پیکسلها:
مقدار انرژی مغناطیسی که یک تصویر رقومی به هنگام تصویر برداری کسب میکند،رقم های دوتایی(Digit binary) یا بیت ها(Bits) را تشکیل میدهند که از قوه صفر تا ۲ ارزش گذاری شده است.هر بیت ، توان یک به قوه ۲ (۱بیت=۲۱)میباشد. حداکثر تعداد روشنایی بستگی به تعداد بیت ها دارد. بنابراین ۸ بیت یعنی ۲۵۶ شماره رقومی که دامنه ای از ۰ تا ۲۵۵ دارد.به همین دلیل است که وقتی شما تصویر رستری از سنجنده خاصی مانند TM را وارد نرمافزاری میکنید تغییرات میزان روشنایی را بین ۰ تا ۲۵۵ نشان میدهد.

دقت تصویر:
دقت تصویر بستگی به عدد پیکسل ها دارد.با یک تصویر ۲ بیتی ، حداکثر دامنه روشنایی ۲۲ یعنی ۴ میباشد که دامنه آن از ۰ تا ۳ تغییر میکند.در این حالت تصویر دقت (تفکیک پذیری لازم) را ندارد.تصویر ۸ بیتی حداکثر دامنه ۲۵۶ دارد و تغییرات آن بین ۰ تا ۲۵۵ است .که دقت بالاتری دارد.

      دقت تصویر ۳ بیتی        دقت تصویر ۸ بیتی

 
 
ترمیم تصویر(Image restoration):
در بیشتر تصاویری که توسط ماهواره ها یا رادار ها ثبت میگردند ، اختلالاتی در تصویر به وجود میاید که به دلیل خش میباشد.دو اختلال مهم در تصاویر چند باندی ، نواری شدن (Banding) و خطوط از جاافتاده میباشد.نواری شدن(باندی شدن):
اشتباهی که توسط سنجنده ، در ثبت و انتقال داده ها روی میدهد.و یا تغییر پیکسل در بین ردیف ها میتواند باعث ایجاد چنین اشتباهی گردد.خطوط از جا افتاده ( خطا در تصویر) :
اشتباهی که در ثبت و انتقال داده ها روی میدهد و در نتیجه، یک ردیف پیکسل در عکساز بین میرود.باندی شدننبود یک ردیف پیکسل در تصویر

 
 
بالا بردن دقت عکس:
یکی از کار های مهمی که در پردازش تصویر انجام میگردد، بالا بردن دقت عکس به منظور دید و تفسیر چشمی دقیق تر میباشد.روش های بسیاری برای نیل به این هدف وجود دارد ولی مهمترین آنها ، افزایش تباین(Contrast) تصویر و عملیات فیلتر کردن میباشد.هیستوگرام تصویر:
در هر تصویر رقومی ، مقادیر پیکسل ها بیانگر خصوصیات آن تصویر(مانند میزان روشنایی تصویر و وضوح آن) میباشد.هیستوگرام تصویر در حقیقت بیان گرافیکی میزان روشنایی تصویر میباشد. مقادیر روشنایی( برای مثال ۰-۲۵۵) در طول محور X بیان شده و میزان فراوانی هر مقدار در محور Y بیان میگردد.
تصویر ۸ بیتی(۰-۲۵۵) در بالا و هیستوگرام مقادیر پیکسل تصویر در پایین .
محور افقی بین ۰-۲۵۵ و محور قائم ، تعداد پیکسل ها میباشد.افزایش تباین از طریق امتداد اعداد ( DN) پیکسلها :
معمولا دامنه مقادیر پیکسل های تصاویر با هر بیتی ( در اینجا مثلا ۸ بیت)، بین ۰-۲۵۵ نمیباشد .و مثلا بین ۴۸ تا ۱۵۳ میباشد . برای افزایش تباین ، مقادیر پیکسل ها را آنقدر امتداد میدهیم تا ۴۸ به جای ۰ و ۱۵۳ به جای ۲۵۶ قرار گیرد . در نتیجه تباین وهمچنین کیفیت عکس بالا میرود. به این عمل کشش خطی گویند.

پردازش تصویر چیست؟ قسمت ۱
پردازش تصویر چیست؟ قسمت ۲

ﺑﺎﺯﻧﻤﺎیی و ﺍﺳﺘﺨﺮﺍﺝ ﻭﻳﮋﮔﻴﻬﺎ-سومین و آخرین بخش OCR

باﺯﻧﻤﺎیی و ﺍﺳﺘﺨﺮﺍﺝ ﻭﻳﮋﮔﻴﻬﺎ :

ﺑﺎﺯﻧﻤﺎیی ﺗﺼﺎﻭﻳﺮ ﻣﻬﻤﺘﺮﻳﻦ ﻧﻘﺶ ﺭﺍ ﺩﺭ ﺳﻴﺴﺘﻤﻬﺎﻱ ﺑﺎﺯﺷﻨﺎﺳﻲ ﺣﺮﻭﻑ ﺍﻳﻔﺎ ﻣﻲكند. در ﺳﺎﺩﻩﺗﺮﻳﻦ ﺣﺎﻟﺖ، ﺗﺼﺎﻭﻳﺮ ﺳﻄﺢ ﺧﺎﻛﺴﺘﺮﻱ ﻳﺎ ﺑﺎﻳﻨﺮﻱ ﺑﻪ ﻳﻚ ﺑﺎﺯﺷﻨﺎﺳﻲ ﻛﻨﻨﺪﻩ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ. ﻟﻴﻜﻦ ﺩﺭ ﺑﻴﺸﺘﺮ ﺳﻴﺴﺘﻤﻬﺎﻱ ﺑﺎﺯﺷﻨﺎﺳﻲ ﺑﻤﻨﻈﻮﺭ ﺍﺟﺘﻨﺎﺏ ﺍﺯ ﭘﻴﭽﻴﺪﮔﻲ ﺍﺿﺎﻓﻲ ﻭ ﺍﻓﺰﺍﻳﺶ ﺩﻗﺖ ﺍﻟﮕﻮﺭﻳﺘﻤﻬﺎ، ﻳﻚ ﺭﻭﺵ ﺑﺎﺯﻧﻤﺎیی ﻓﺸﺮﺩﻩ ﺗﺮ ﻭ ﺑﺎ ﻗﺪﺭﺕ ﺗﻤﺎﻳﺰ ﺑﻴﺸﺘﺮ ﻣﻮﺭﺩ ﻧﻴﺎﺯ است. ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻭﻳﮋﮔﻴﻬﺎ ﻫﺮ ﻛﻼﺱ ﺍﺳﺘﺨﺮﺍﺝ ﻣﻲشوند ﻛﻪ ﺑﻪ ﺗﺸﺨﻴﺺ ﺁﻥ ﺍﺯ ﺳﺎﻳﺮ ﻛﻼﺳﻬﺎ ﻛﻤﻚ ﻣﻲ گیرد. ﺩﺭ ﻋﻴﻦ ﺣﺎﻟﻲ ﻛﻪ ﻧﺴﺒﺖ ﺑﻪ ﺗﻐﻴﻴﺮﺍﺕ ﻣﺸﺨﺼﺎﺕ ﺍﻋﻀﺎﻱ ﻳﻚ ﻛﻼﺱ ﻣﺴﺘﻘﻞ ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪ. ﻭﻳﮋﮔﻴﻬﺎﻱ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺑﺎﻳﺴﺘﻲ ﻧﺴﺒﺖ ﺑﻪ ﺍﻋﻮﺟﺎﺟﻬﺎ ﻭ ﺗﻐﻴﻴﺮﺍﺕ ﺍﺣﺘﻤﺎﻟﻲ ﻛﻪ ﻛﺎﺭﺍﻛﺘﺮﻫﺎ ﺩﺭ ﻳﻚ ﻛﺎﺭﺑﺮﺩ ﺧﺎﺹ پیدا كنند، ﺗﻐﻴﻴﺮﻧﺎﭘﺬﻳﺮ ﺑﺎﺷﻨﺪ. ﻫﻤﭽﻨﻴﻦ ﭘﺪﻳﺪﻩﺍﻱ ﺗﺤﺖ ﻋﻨﻮﺍﻥ « ﻧﻔﺮﻳﻦ ابعادی » (Curse of Dimensionality) به ما ﻫﺸﺪﺍﺭ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﺑﺎ ﻳﻚ ﻣﺠﻤﻮﻋﺔ ﺁﻣﻮﺯﺷﻲ ﻣﺤﺪﻭﺩ ﭼﻨﺎﻧﭽﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺍﺯ ﻳﻚ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﺓ ﺁﻣﺎﺭﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ، ﺗﻌﺪﺍﺩ ﻭﻳﮋﮔﻴﻬﺎ ﺑﻄﻮﺭ ﻣﻨﻄﻘﻲ ﺑﺎﻳﺴﺘﻲ ﻛﻮﭼﻚ ﺑﺎﺷﺪ. ﺑﺮﻃﺒﻖ ﻳﻚ ﻗﺎﻧﻮﻥ ﺗﺠﺮﺑﻲ، ﺗﻌﺪﺍﺩ ﺍﻟﮕﻮﻫﺎﻱ ﺁﻣﻮﺯﺷﻲ ﻫﺮ ﻛﻼﺱ ﺑﺎﻳﺴﺘﻲ ۵ تا ۱۰ برابر ابعاد بردار ویژگی انتخابی باشد. در عمل مقتضیات ﺭﻭﺷﻬﺎﻱ ﺑﺎﺯﻧﻤﺎیی، ﺍﻧﺘﺨﺎﺏ ﺑﻬﺘﺮﻳﻦ ﺭﻭﺵ ﺑﺮﺍﻱ ﻳﻚ ﻛﺎﺭﺑﺮﺩ ﺧﺎﺹ ﺭﺍ ﺑﺎ ﻣﺸﻜﻞ ﻣﻮﺍﺟﻪ ﻣﻲﻛﻨﺪ. ﻫﻤﭽﻨﻴﻦ ﺍﻳﻦ ﻣﺴﺌﻠﻪ ﺭﺍ ﻧﻴﺰ ﺑﺎﻳﺪ ﻣﺪ ﻧﻈﺮ ﻗﺮﺍﺭ ﺩﺍﺩ ﻛﻪ ﺁﻳﺎ ﺣﺮﻭﻑ ﻳﺎ ﻛﻠﻤﺎﺗﻲ ﻛﻪ ﻣﻲ ﺑﺎﻳﺴﺖ ﺗﺸﺨﻴﺺ ﺩﺍﺩﻩ ﺷﻮﻧﺪ  ﺟﻬﺖ ﻭ ﺍﻧﺪﺍﺯﺓ ﻣﺸﺨﺼﻲ ﺩﺍﺭﻧﺪ ﻳﺎ ﺧﻴﺮ، ﺩﺳﺘﻨﻮﻳﺲ ﻳﺎ ﭼﺎﭘﻲ ﻫﺴﺘﻨﺪ، ﻭ ﻳﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺎ ﭼﻪ ﺣﺪ ﺑﻮﺳﻴﻠﺔ ﻧﻮﻳﺰ ﻣﻐﺸﻮﺵ ﺷﺪﻩ ﺑﺎﺷﻨﺪ. ﺍﺯ ﻃﺮﻑ ﺩﻳﮕﺮ ﺩﺭ ﻣﻮﺭﺩ ﺣﺮﻭﻓﻲ ﻛﻪ ﺑﻪ ﭼﻨﺪﻳﻦ ﺷﻜﻞ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ. (ﻣﺎﻧﻨﺪ ’a‘ ﻭ ’A‘) ﻣﻤﻜﻦ ﺍﺳﺖ ﻻﺯﻡ ﺑﺎﺷﺪ ﻛﻪ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻛﻼﺱ ﺍﻟﮕﻮ ﺑﻪ ﻳﻚ ﻛﺎﺭﺍﻛﺘﺮ ﺧﺎﺹ ﺗﻌﻠﻖ ﻳﺎﺑﺪ.
ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﻋﻨﻮﺍﻥ ﺷﺪ، ﺑﺎﺯﻧﻤﺎیی ﻳﻚ ﻣﺮﺣﻠﺔ ﺑﺴﻴﺎﺭ ﻣﻬﻢ ﺩﺭ ﺣﺼﻮﻝ ﺭﺍﻧﺪﻣﺎﻥ ﻣﻨﺎﺳﺐ ﺑﺮﺍﻱ ﺳﻴﺴﺘﻤﻬﺎﻱ ﺑﺎﺯﺷﻨﺎﺳﻲ ﺣﺮﻭﻑ ﺍﺳﺖ؛ ﻟﻴﻜﻦ ﺟﻬﺖ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﻋﻤﻠﻜﺮﺩ ﺑﻬﻴﻨﻪ ﻻﺯﻡ ﺍﺳﺖ ﻛﻪ ﺳﺎﻳﺮ ﻣﺮﺍﺣﻞ ﻧﻴﺰ ﺑﻬﻴﻨﻪ ﮔﺮﺩﻧﺪ ﻭ ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ ﻧﻤﻮﺩ ﻛﻪ ﺍﻳﻦ ﻣﺮﺍﺣﻞ ﻣﺴﺘﻘﻞ ﻧﻤﻲ ﺑﺎﺷﻨﺪ. ﺍﺳﺘﺨﺮﺍﺝ ﻳﻚ ﺭﻭﺵ ﺧﺎﺹ ﺍﺳﺘﺨﺮﺍﺝ ﻭﻳﮋﮔﻴﻬﺎ، ﻃﺒﻴﻌﺖ ﺧﺮﻭﺟﻲ ﻣﺮﺣﻠﺔ ﭘﻴﺶ ﭘﺮﺩﺍﺯﺵ ﺭﺍ ﺑﻪ ﻣﺎ ﺩﻳﻜﺘﻪ ﻣﻲ ﻛﻨﺪ ﻭ ﻳﺎ ﺣﺪﺍﻗﻞ ﻣﺎ ﺭﺍ ﺩﺭ ﺍﻧﺘﺨﺎﺑﻤﺎﻥ ﻣﺤﺪﻭﺩ ﻣﻲ ﺳﺎﺯﺩ. ﺑﻌﻀﻲ ﺍﺯ ﺭﻭﺷﻬﺎﻱ ﺍﺳﺘﺨﺮﺍﺝ ﻭﻳﮋﮔﻴﻬﺎ ﺑﺮ ﺭﻭﻱ ﺗﺼﺎﻭﻳﺮ ﺳﻄﺢ ﺧﺎﻛﺴﺘﺮﻱ ﺣﺮﻭﻑ ﻣﻨﻔﺮﺩ ﻋﻤﻞ ﻣﻲ ﻧﻤﺎﻳﻨﺪ. ﺩﺭﺣﺎﻟﻴﻜﻪ ﺳﺎﻳﺮ ﺭﻭﺷﻬﺎ ﺑﺮ ﺭﻭﻱ ﺳﻤﺒﻠﻬﺎﻱ ﺑﺎ ﭘﻴﻮﺳﺘﮕﻲ ﻣﺮﺗﺒﺔ ۴ یا ۸ كه از ﺗﺼﻮﻳﺮ ﺑﺎﻳﻨﺮﻱ ﺍﺻﻠﻲ ﺟﺪﺍ ﮔﺮﺩﻳﺪﻩ ﻳﺎ ﺑﺮ ﺭﻭﻱ ﺳﻤﺒﻠﻬﺎﻱ ﻧﺎﺯﻙ ﺷﺪﻩ ﻳﺎ ﺑﺮ ﺭﻭﻱ ﻛﺎﻧﺘﻮﺭ ﺳﻤﺒﻠﻬﺎ ﺍﻋﻤﺎﻝ ﻣﻲ ﮔﺮﺩﻧﺪ.
ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻦ، ﻧﻮﻉ ﻓﺮﻣﺖ ﻭﻳﮋﮔﻴﻬﺎﻱ ﺍﺳﺘﺨﺮﺍﺝ ﺷﺪﻩ ﺑﺎﻳﺴﺘﻲ ﺑﺎ ﻧﻴﺎﺯﻣﻨﺪﻳﻬﺎﻱ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﺓ ﻣﻨﺘﺨﺐ ﻣﻄﺎﺑﻘﺖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ. ﻭﻳﮋﮔﻴﻬﺎﻱ ﻧﻮﻉ ﮔﺮﺍﻓﻲ ﻳﺎ ﮔﺮﺍﻣﺮﻱ ﺑﺮﺍﻱ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﻩ ﻫﺎﻱ ﺳﺎﺧﺘﺎﺭﻱ ﻳﺎ ﻧﺤﻮﻱ ﻣﻨﺎﺳﺐ ﻣﻲ ﺑﺎﺷﻨﺪ.
ﻭﻳﮋﮔﻴﻬﺎﻱ ﮔﺴﺴﺘﻪ ﻛﻪ ﻓﺮﺿﺎﹰ ﺗﻨﻬﺎ ﺩﻭ ﻳﺎ ﺳﻪ ﻣﻘﺪﺍﺭ ﻣﺠﺰﺍ ﺩﺍﺭﻧﺪ، ﺑﺮﺍﻱ ﺩﺭﺧﺘﻬﺎﻱ ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﺍﻳﺪﻩ ﺁﻝ ﻣﻲ ﺑﺎﺷﻨﺪ. ﺑﺮﺩﺍﺭﻫﺎﻱ ﻭﻳﮋﮔﻲ ﺑﺎ ﻣﻘﺎﺩﻳﺮ ﺣﻘﻴﻘﻲ، ﻣﻨﺎﺳﺐ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﻩ ﻫﺎﻱ ﺁﻣﺎﺭﻱ ﻫﺴﺘﻨﺪ.
ﻫﻤﭽﻨﻴﻦ ﭼﻨﺪﻳﻦ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﻩ ﻧﻴﺰ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﺭﻭﺵ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﭼﻨﺪ ﻃﺒﻘﻪ ﻳﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﻩ ﻫﺎﻱ ﻣﻮﺍﺯﻱ (ﻛﻪ ﺩﺭ ﺁﻥ ﺗﺮﻛﻴﺒﻲ ﺍﺯ ﻧﺘﺎﻳﺞ ﻃﺒﻘﻪ ﺑﻨﺪﻱ ﻛﻨﻨﺪﻩ های ﻣﺠﺰﺍ ﺩﺭ ﺣﺼﻮﻝ ﻧﺘﻴﺠﺔ ﻧﻬﺎﻳﻲ ﺩﺧﺎﻟﺖ ﺩﺍﺭﻧﺪ) ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﮔﻴﺮﻧﺪ. ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻣﻤﻜﻦ ﺍﺳﺖ ﻭﻳﮋﮔﻴﻬﺎﻱ ﺩﺍﺭﺍﻱ ﭼﻨﺪ ﻓﺮﻣﺖ ﻣﺨﺘﻠﻒ ﺍﺯ ﺣﺮﻭﻑ ﻭﺭﻭﺩﻱ ﺍﺳﺘﺨﺮﺍﺝ ﮔﺮﺩﻧﺪ.

ماشین تورینگ کوانتومی

ماشین تورینگ کوانتومی (QTM) و همچنین ماشین جامع تورینگ کوانتومی، ماشیني انتزاعی است که با بهره‌گیری از قدرت رایانش کوانتومی برای مدل‌سازی ساده کامپیوترهای کوانتومی مورد استفاده قرار می‌گیرد.

در اصل، می‌توان هر الگوریتم کوانتومی را با یک ماشین تورینگ کوانتومی تفسیر و تشریح کرد. چنین ماشین‌هایی برای نخستین‌بار در سال ۱۹۸۵ و در یک مقاله از طرف دیوید دویچ (David Deutsch) فیزیکدان در دانشگاه آکسفورد مطرح شد. وی در این مقاله تلاش داشت تا نشان دهد گیت‌های کوانتومی می‌توانند همانند نمونه‌های سنتی دیجیتال با منطق دودویی نیز کار کنند. می‌توان ماشین‌های تورینگ کوانتومی را با استفاده از ماتریس‌های انتقالی خاص که توسط لنس فورت‌نو (Lanc Fortnow) تهیه و تدوین شده‌اند، به انواع کلاسیک و احتمالاتی ماشین‌های تورینگ مرتبط کرد.

همچنین، نمونه‌هایی از چنین ماشین‌هایی تحت عنوان Linear Quantum Turing Machine توسعه داده شده است که کلیت یافته ماشین‌های معمولی کوانتومی تورینگ بوده و علاوه بر مدل‌سازی مفهوم حالات ترکیبی، امکان استفاده از توابع غیر قابل بازگشت را نیز فراهم می‌سازند. نتیجه استفاده از چنین ماشین‌هایی، ارزیابی کوانتومی بدون وجود عواقب کلاسیک آن است که در نوع خود بسیار ارزشمند است. لازم به ذکر است با این‌که ماشین‌های تورینگ کوانتومی مدلی ساده و جالب برای تحلیل الگوریتم‌های کوانتومی هستند اما مدارهای کوانتومی که از لحاظ محاسباتی با آن‌ها معادل هستند، بیشتر مورد استفاده قرار می‌گیرند.

با مراجعه به آدرس www.mathematica-journal.com/issue/v8i3/features/hertel/index.html می‌توانید یک شبیه‌ساز ماشین کوانتومی تورینگ را که با استفاده از Mathematica توسعه داده شده است، دانلود کرده و برای آشنایی بیشتر با QTM از آن استفاده کنید.

نکته قابل توجه در تئوری مطرح شده از طرف تورینگ این است که وی‌ در مقاله اولیه خود میان «ماشین اتوماتیک» یا a-Machine و «ماشین انتخاب کننده» یا c-Machine تفاوت قائل بوده است چراکه در بخشی از نوشتار خود ذکر کرده است «حرکات ماشین خودکار، به‌طور کامل در پیکربندی تعیین شده است اما حرکات ماشین انتخاب کننده، به‌طور نسبی در پیکربندی آن تعیین شده است. زمانی که چنین ماشینی به یکی از این حالت‌های مبهم می‌رسد، باید تا زمان تعیین یک انتخاب از طرف عامل بیرونی منتظر باقی بماند. این می‌تواند در زمینه استفاده از ماشین‌ها در سیستم‌های axiomatic کاربرد داشته باشد.»

نمای شماتیک جدول‌گذار Busy Beaver
شكل۱: نمای شماتیک جدول‌گذار Busy Beaver

در انتظار یادگیری ماشینی کوانتومی خواهیم بود

در کنار این دو ماشین، وی صحبت از وجود نوع دیگری از ماشین را به میان می‌آورد که از آن‌ها به Oracle Machine (ماشین پیشگو) یا o-Machine تعبیر می‌شود. ماشین پیشگو، ماشین تورینگی است که محاسبات خود را برای تکمیل کردن، در حالت o متوقف می‌کند. در این حالت، این ماشین تا زمان تصمیم‌گیری توسط پیشگو(که مفهومی نامشخص بوده و شاید نتوان آن را ماشین به شمار آورد)منتظر می‌ماند. این ایده هم‌اکنون به شدت مورد توجه و استفاده ریاضیدانان است.

یکی از کاربردهای چنین مفاهیمی، امور مرتبط با رمزنگاری است که در آن، پیشگوها برای استدلال در زمینه امنیت پروتکل‌های رمزنگاری در هنگام استفاده از توابع Hash به‌کار می‌روند. در این حالت، یک پیشگوی تصادفی به‌جای یک تابع Hash به طور متناوب به پرس‌و‌جوها پاسخ داده و از این طریق، میزان‌کاهش امنیت پروتکل مربوطه محاسبه می‌شود.
دسترسی به پیشگوی تصادفی مذکور همانند تابع Hash برای تمام استفاده‌کنندگان، حتی حمله‌کنندگان فراهم خواهد بود. چنین کاری باعث می‌شود که حمله کنندگان با حل مسئله بسیار مشکلی در قلب مسئله کاهش امنیت مواجه بوده و نتوانند به راحتی از تابع Hash برای رسیدن به اهداف خود بهره ببرند.

بیشتر گفته می‌شود که ماشین‌های تورینگ قدرتی مشابه با ماشین‌های واقعی دارند و می‌توانند هر عملیاتی را که یک برنامه واقعی می‌تواند انجام دهد، به انجام برسانند. چیزی که در این ادعا در نظر گرفته نشده آن است که ماشین‌های واقعی می‌توانند در هر لحظه در یکی از پیکربندی‌های متناهی خود قرار گیرند و در اصل، یک ابزار اتوماتیک شده خطی محدود هستند در حالی که ماشین‌های تورینگ فضای ذخیره‌سازی نامحدودی برای محاسبات خود در اختیار دارند. در اصل، ماشین تورینگ برای مدل‌سازی کامپیوتر کاربرد ندارد بلکه هدف اصلی آن‌ مدل‌سازی خود مفهوم محاسبات است. از لحاظ تاریخی نیز کامپیوترهایی که به محاسبات روی حافظه درونی خود می‌پرداختند، خیلی بعدتر از مطرح شدن ایده ماشین تورینگ ساخته شدند. در نقطه مقابل، دلایل بسیاری وجود دارد که بتوان از ماشین تورینگ برای مدل‌سازی کامپیوترهای واقعی استفاده کرد. شماری از این دلایل عبارتند از:

– هر کاری که یک کامپیوتر واقعی می‌تواند انجام دهد، یک ماشین تورینگ نیز می‌تواند. ماشین تورینگ می‌تواند هر نوع روالی که در زبان‌های برنامه‌نویسی پیدا می‌شود از جمله روال‌های بازگشتی و متدهای پردازش پارامترها را شبیه‌سازی کند.

– ماشین تورینگ برخلاف کامپیوتر می‌تواند حجم نامتناهی از داده‌ها را پردازش کند که در صورت در نظر گرفتن زمانی محدود برای کارکرد آن، حجم داده‌های آن نیز همانند کامپیوتر محدود می‌شود.
– همانند ماشین تورینگ، کامپیوترها می‌توانند فضای ذخیره‌سازی خود را با استفاده از انواع ابزارها و فناوری‌ها افزایش داده و به طور مناسب به انجام محاسبات بپردازند.
 توصیف یک ماشین واقعی با استفاده از مفاهیم مجرد ساده‌تر، بسیار مشکل‌تر از توصیف آن‌ها با ماشین‌های تورینگ است. به عنوان مثال، شاید توصیف یک الگوریتم با مدل ماشین تورینگ با صدها حالت قابل انجام باشد در حالی که انجام چنین کاری با یک ماشین واقعی، صدها میلیون حالت مختلف را در بر داشته باشد.

– ماشین‌های تورینگ الگوریتم‌ها را بدون توجه به میزان حافظه‌ای که مصرف می‌کنند، توصیف می‌کنند در حالی که همواره در زمینه میزان حافظه در دسترس ماشین‌های واقعی محدودیت‌های بسیاری وجود دارد. ماشین تورینگ این امکان را فراهم می‌کند که بی‌محدودیت، الگوریتم‌ها را بررسی کرده و به مشاهده نتایج عملکرد آن‌ها بپردازیم بدون این‌که در زمینه محدودیت‌های سیستم‌های واقعی نگرانی داشته باشیم.

– ماشین تورینگ فهم و تحلیل الگوریتم‌ها را ساده می‌کند. الگوریتم‌های معادلی که روی ماشین‌های مجرد معادل با ماشین تورینگ اجرا می‌شوند، عموماً در مقابل نمونه‌های مشابه خود در سیستم‌های واقعی کلیت بیشتری داشته و به‌عنوان مثال، معضلات مرتبط با انواع دقیق داده‌ای در آن‌ها مطرح نیست.

نمونه دیاگرام پیشرفت محاسبات یک ماشین Busy Beaver  سه حالته 
شكل۲ : نمونه دیاگرام پیشرفت محاسبات یک ماشین Busy Beaver  سه حالته


بخش سوم

محدودیت‌های ماشین تورینگ

با این‌که ماشین تورینگ مفهومی جذاب و بسیار جامع بوده و سرآغاز بسیاری از پیشرفت‌های بشری درحوزه محاسبات به شمار می‌آید، همانند دیگر نظریات، با محدودیت‌هایی نیز مواجه است. یکی از مهم‌ترین محدودیت‌های ماشین تورینگ در برابر سیستم‌های واقعی امروزی، نداشتن امکان مدل‌سازی صحیح نرم‌افزارهایی مانند سیستم‌های‌عامل یا پردازشگر‌های متن است که طوری نوشته شده‌اند تا در زمانی نامحدود، ورودی نامحدودی را دریافت کنند و از کار باز نایستند. ماشین تورینگ چنین عملکردی را به خوبی مدل نمی‌کند اما امکان مدل‌سازی بخش‌هایی از آن‌ را دارد.

محدودیت دیگری که می‌توان برای ماشین تورینگ بر‌شمرد، در حوزه پیچیدگی محاسباتی مطرح می‌شود و آن این است که ماشین تورینگ به خوبی امکان مدل‌سازی اهمیت در ترتیب‌هایی خاص (که در بعضی الگوریتم‌ها مورد نیاز است، مانند حلقه‌های تکرار) را ندارد. به عنوان مثال، کامپیوترهای مدرن با برنامه ذخیره‌شده، نمونه‌ای از یک فرم خاص از ماشین‌های مجرد هستند که RASP(سرنام Random Access Stored Program Machine) نامیده می‌شوند. این نوع ماشین‌ها برنامه را در حافظه‌ای جدا از فضای دستورالعمل‌های ماشین حالت متناهی ذخیره می‌کنند. این ماشین‌ها معمولاً به قابلیت آدرس‌دهی غیر‌مستقیم حافظه و رجیسترها مجهز هستند و به همین دلیل، هر برنامه RASP می‌تواند به راحتی به هر رجیستر مورد نیاز خود دسترسی پیدا کند. نتیجه این تفاوت آن است که در این ماشین‌ها بر‌خلاف ماشین تورینگ، بر‌اساس شاخص‌های حافظه می‌توان بهینه‌سازی‌های محاسباتی را پیاده‌سازی کرد؛ امری که در مدل ماشین تورینگ امکان‌پذیر نیست و به همین دلیل، زمانی که ماشین تورینگ برای تعداد محدودی اجرا در نظر گرفته می‌شود، می‌توان در تعداد مشخصی از اجراهای برخی الگوریتم ها بروز «خطای حد پایینی نادرست» را اثبات کرد (این امر به دلیل ساده‌‌سازی ناصحیح فرضیات در ماشین تورینگ است). مثالی از این مورد، الگوریتم جست‌وجوی باینری است که روی مدل‌های RASP بسیار سریع‌تر از ماشین تورینگ اجرا می‌شود.

یکی دیگر از محدودیت‌های ماشین تورینگ در حوزه همزمانی(Concurrency) مطرح می‌شود چرا‌که مدل تورینگ همزمانی را به خوبی مدل نمی‌کند. به عنوان مثال، محاسبات مربوط به عدد صحیحی که می‌تواند توسط یک ماشین غیرقطعی تورینگ پایان‌‌دار انجام شود که از روی یک نوار خالی شروع به کار می‌کند، محدود است در حالی که سیستم‌های همزمان پایان دار بدون ورودی، می‌توانند مقادیر صحیح را بی هیچ محدودیتی محاسبه کنند.

مشکل دیگری که ماشین تورینگ با آن مواجه است، مسئله توقف است که یکی از کلیدی‌ترین مشکلات آن به شمار می‌آید. بر این اساس، هیچ ماشین تورینگی وجود ندارد که بتواند متوقف شدن در برابر یک ورودی خاص را محاسبه کند! برای درک عدم امکان محاسبه تابع توقف، تصور کنید ماشینی وجود دارد که از ترکیب ماشین کپی و اضافه‌کردن حالت توقف به ابتدای حالت‌های آن ساخته شده است. در این صورت، اگر ورودی شروع شونده با ۱ به چنین ماشینی اعمال شود، ماشین به حالت انتقالی بی نهایتی از شروع و توقف وارد می‌شود و راهی برای خروج از این وضعیت نیز ارائه نمی‌کند. چنین مشکلی در انواع دیگری از ماشین‌های تورینگ نیز موجود است.

نمونه‌ای امروزين از ماشين سنتی تورينگ

یکی از بهترین نمونه‌هایی که از ماشین تورینگ ساخته شده است، پروژه «یک ماشین تورینگ» است که می‌توانید با رفتن به آدرس اینترنتی http://aturingmachine.com/index.php مشخصات و اطلاعات مربوط به آن را مشاهده و دریافت کنید.
در این ماشین که با استفاده از میکروکنترلر Parallax Propeller ساخته شده، انتقال حالت از روی قوانینی که روی یک SD Card ذخیره می‌شود، برداشت شده و داده‌ها از روی نوار تأمین می‌شوند. در ساخت این ماشین سعی شده حداکثر شباهت فیزیکی به آن چه تورینگ مد نظر داشته است، حفظ شده و مدلی مناسب از عملکرد ماشین اصلی تورینگ ارائه شود. اما این ماشین چگونه و از چه اجزایی ساخته شده و چگونه کار می‌کند؟

جزء اصلی سیستم هد خواندن و نوشتن ماشین است که عملیات ورودی خروجی را روی نوار ۱۰۰۰ اینچی سفید انجام می‌دهد. کاراکترهای لازم با استفاده از یک ماژیک پاک شونده روی نوار نوشته می‌شوند و با توجه به عرض یک اینچی هر خانه، کل نوار امکان ذخیره‌سازی ۱۰ کیلو بیت داده را دارد. (شکل ۱)
عملیات عقب و جلو بردن نوار به‌وسیله یک موتور پله‌ای مجهز به سنسور حالت اولیه و متصل به تسمه دندانه‌دار انجام می‌گیرد. این دندانه‌ها و چرخش موتور طوری تنظیم شده است که هر حرکت موتور، یک سلول از نوار را جابه‌جا کند. (شکل ۲)

اسکنر این ماشین با استفاده از یک دوربین اسکن خطی با نور روشن‌کننده پیاده‌سازی شده است. مدل دوربین به‌کار رفته، TS-1401 است و ۱۲۸ بیت داده را در هر خط برداشت می‌‌کند. زمان تمرکز چیزی حدود ۲۰۰/۱ ثانیه است (شکل ۳).

 

نمونه‌ای امروزين از ماشين سنتی تورينگ و مراحل کار آن

عملیات پاک‌کردن سمبل‌ها از روی نوار با استفاده از یک غلطک پاک کننده به انجام می‌رسد. برای پاک کردن، غلطک با استفاده از یک پین به پایین آمده و سپس به میزانی می‌چرخد تا مقادیر روی نوار پاک شود. پس از انجام عملیات پاک کردن، غلطک به بالا باز می‌گردد. (شکل۴) ماشین مذکور با استفاده از کنسولی که با تعدادی نمایشگر و دکمه کنترلی تجهیز شده است، کنترل می‌شود. از این طریق می‌توان برنامه‌های مورد نظر را که از روی کارت حافظه SD بارگذاری می‌شوند، انتخاب کرده و کارکرد ماشین را تعیین کرد. (شکل ۵)

کنترل ماشین مذکور توسط چیپ میکروکنترلر Parallax Propeller که در سمت چپ قرار گرفته است، به انجام می‌رسد. در این مدار، تمام ۳۲ پورت ورودی/خروجی میکروکنترلر مذکور استفاده شده است. مدار سمت راست نیز وظیفه تأمین توان مصرفی مدار و همچنین کنترل و تأمین توان موتورهای پله‌ای و کنترل  ‌هد را بر عهده دارد. (شکل ۶)

 

نمونه‌ای امروزين از ماشين سنتی تورينگ و مراحل کار آن

نوار کاغذی از هر طرف روی قرقره‌ای که به یک موتور DC با سرعت ۴ دور در دقیقه متصل است، سوار شده است. (شکل ۷ و ۸) در پایگاه اینترنتی پروژه می‌توانید شماتیک  مدارهای به کار رفته در این ماشین را به صورت مفصل مشاهده کنید.  نرم‌افزار این ماشین با استفاده از زبان Spin مخصوص Propeller نوشته شده است که دو بخش مهم و اساسی دارد: بخشی که با کاربر مرتبط است و بخش دیگری که عملیات ماشین تورینگ را به انجام می‌رساند. بخش اول وظیفه بارگذاری برنامه‌ها از SD Card، تولید داده‌های پیش فرض روی نوار و کارهای جنبی را انجام می‌دهد در حالی که بخش دوم وظیفه انجام عملیات خواندن و نوشتن و پاک‌کردن نوار و همچنین عملکرد ماشین در برابر داده‌های ورودی را بر عهده دارد. در شکل ۹ دیاگرام نرم‌افزاری این ماشین را مشاهده می‌کنید.

 

دیاگرام نرم افزاری نمونه‌ای امروزين از ماشين سنتی تورينگ
دياگرام نرم‌افزاری اين نمونه از ماشين تورينگ

ماشین جامع تورینگ

ماشین تورینگی که بتواند هر ماشین تورینگ دیگری را شبیه‌سازی کند، ماشین جامع تورینگ یا Turing Universal Machine خوانده می‌شود. به طور همزمان، تبیین ریاضی‌وارتری از ماشین جامع تورینگ با طبیعتی مشابه نیز توسط فردی به‌نام آلونزو چرچ (Alonzo Church )که کار وی روی Lambda Calculus با تئوری محاسبات تورینگ همپوشانی داشت، مطرح شده که اکنون با عنوان تئوری چرچ -تورینگ (Church-Turing) شناخته می‌شود.

تورینگ در این زمینه می‌گوید: «می‌توان ماشینی اختراع کرد که ‌بتواند هر عبارت محاسباتی را محاسبه کند. اگر ماشین U با نواری تغذیه شود که روی آن رشته‌های توصیف‌کننده عملکرد ماشین M نوشته شده باشد، آنگاه ماشین U عباراتی مشابه با M را محاسبه خواهد کرد.»

دیاگرامی ازنحوه عملکرد یک ماشین تورینگ عمومی (U) که با دریافت کدهای عملکرد ماشین تورینگ M، عملکرد آن را شبیه‌سازی می‌کند.
شكل۳: دیاگرامی ازنحوه عملکرد یک ماشین تورینگ عمومی (U) که با دریافت کدهای عملکرد ماشین تورینگ M، عملکرد آن را شبیه‌سازی می‌کند.

ماشین تورینگ زیستی

زمانی که تورینگ در سال ۱۹۳۶، مقاله معروفش را در زمینه ماشین محاسباتی و همچنین ماشین جامع محاسباتی مطرح کرد، توجهات بسیاری را به خود جلب کرد و از آن پس بود که ماشین تورینگ، تبدیل به آغازگر عصر کامپیوترهای دیجیتال شد.
در دهه ۱۹۴۰ اما ایده تورینگ توسط جان فون‌ نویمان که فکر می‌کرد می‌توان ماشینی ساخت که بتواند یک ماشین دیگر همانند خودش را بر‌اساس توصیفات درونی‌اش بسازد، توسعه یافت و به ماشين سازنده جامع فون‌نویمان تعمیم پیدا کرد.

وی می‌دانست که برای انجام صحیح این کار، ماشین سازنده باید کپی توصیفات خود را نیز فراهم کرده و آن‌ها را به ماشین فرزند منتقل کند.
در ادامه اما، وی متوجه شد که اگر ماشین مذکور در این فرآیند دچار خطا شود، این موضوع باعث رخداد جهشی شده که در کل مجموعه ماشین‌های بعدی به‌صورت موروثی منتقل خواهد شد. این مفاهیم که توسط تورینگ و فون ‌نویمان توسعه یافته‌اند، به طرز عجیبی با مفاهیمی که در بیولوژی مطرح می‌شود، وجوه مشترک فراوانی دارند. جایی که در آن سیستم‌های پیچیده‌ای وجود دارند که در هر کدام از بخش‌ها، توصیفاتی از آن‌ها جایگذاری شده است.

مفهوم ژن، که توصیف نمادینی از ارگانیسم مرتبطش است (یک کد اسکریپتی) بنیان اساسی دنیای موجودات زنده است و می‌تواند هسته اصلی یک تئوری جامع و جدید را در بیولوژی تشکیل دهد.
تورینگ در سال ۱۹۵۴‌، درست یک سال پس از کشف ساختار جفت پیچشی DNA توسط جیمز واتسون و فرانسیس کریک و البته قبل از وقوع انقلاب حاصل از این کشف در علوم زیست‌شناسی، درگذشت و هیچ‌گاه فرصت بسط و توسعه ایده‌هایش در این حوزه را نیافت. اگرچه وی و فون‌نویمان هیچ تأثیر مستقیمی بر زیست‌شناسی مولکولی نداشتند، کارهای آن‌ها می‌تواند در راستای منظم‌سازی دانش انسان درباره ماشین‌های طبیعی و مصنوعی مورد استفاده قرار گیرد.

 

ماشین تورینگ زیستی

 

تورینگ کامپیوتر با برنامه ذخیره شده را اختراع کرد وفون نویمان نشان داد که توصیف، از خود ماشین سازنده جامع جدا است. این کشفیات به هیچ وجه ساده و ابتدایی نیستند چرا که صحت آن‌ها مدت ها بعد مشخص شد. در سال ۱۹۴۴، اروین شرودینگر(Erwin Schrödinger) در کتابی با عنوان «زندگی چیست؟»، کروموزوم‌‌ها را نقشه معمار و ابزار سازنده عناصر زنده به‌صورت یکجا می‌دانست که اکنون اشتباه بودن آن کاملاً مشخص شده است چراکه کد اسکریپتی موجود در ماشین‌های زنده، تنها حاوی توصیفی از توابع اجرایی مورد نیاز هستند نه خود این توابع. بر همین اساس است که می‌توان گفت معادلات Hogkin ، خصوصیات پالس‌های عصبی را به‌صورت یک مدار الکتریکی مدل می‌‌کند، اما کانال‌های ارتباطی آن‌ها از روی توصیفاتی که توسط ژن‌ها ذخیره می‌شود، ساخته می‌شوند.

با این حال، هم اکنون مشکل اصلی بشر در درک بخش سازنده این ماشین‌های زنده است و پرسش‌های مربوط به توصیفات تقریباً پاسخ داده شده است. بر این اساس، بهترین چیزی که می‌تواند در کانون توجه قرار گیرد، سلول‌ها به‌عنوان ماشین تورینگ یا ماشین سازنده فون‌نویمان است که شاید بتواند راهگشای بسیاری از معماهای موجود در علوم زیستی قرار گیرد. گرچه زیست‌شناسان همواره درباره ماشین‌های زیستی سؤالاتی از قبیل «چگونه کار می‌کند؟»، «چگونه ساخته می‌شود ؟» و «چگونه به این مرحله رسیده است؟» را مطرح می‌کنند و این که ممکن است آن‌ها را مربوط به حوزه فیزیولوژی امبریولوژی یا تکامل دانست، اما در مرکز مسائلی این چنین و مرتبط با موجودات زنده، نوارهایی وجود دارد که حاوی توصیف‌هایی برای ساخت ماشین‌های تورینگ زنده است!

 با این‌که این ایده اکنون پذیرفته شده است، اما در آن زمان بسیار عجیب و شگفت‌انگیز به شمار می‌آمد. بعدها اما این مدل ماشین Universal ارائه شده از طرف تورینگ که به طور اختصاری U نامیده می‌شود از طرف بسیاری مانند مارتین دیویس(Martin Davis)، در سال ۲۰۰۰ به‌عنوان تئوری پایه‌ای که منجر به شکل‌گیری و تولید «کامپیوتر با برنامه ذخیره‌شده» شد، انتخاب و معرفی شد. همچنین، ماشین جامع تورینگ از طرف جان فون نویمان (John von Neumann) برای ساخت ابزار الکترونیکی محاسبه مورد استفاده قرار گرفته و منجر به معرفی مفهوم مهمی با نام معماری فون نویمان شد.

همان‌طور که قبلاً نیز گفته شد، ماشین تورینگ وظیفه انجام اموری را روی داده‌های موجود بر یک نوار نامتناهی بر عهده داشت که این امور با استفاده از اجرای مجموعه‌ای از دستورات که به طور ثابت در ماشین وجود دارند، به انجام می‌رسید. با این حال، می‌توان جدول عملکرد این ماشین معمولی را به صورت رشته‌ای از علامات تبدیل کرد و آن را به همراه مقادیر ورودی روی یک نوار آورد. در این صورت، اگر چنین نواری را تحویل یک ماشین خاص تورینگ کنیم که امکان واکشی جدول عملکرد خود را به همراه ورودی‌ها از روی نوار فراهم می‌کند، ماشینی جامع خواهیم داشت که می‌تواند هر برنامه‌ای را که به آن تحویل می‌شود اجرا کند. شکل ۳ توضیح تصویری این مفهوم است.

مارتین دیویس معتقد است که ایده جایگذاری جدول عملکرد ماشین به همراه ورودی‌ها روی حافظه ماشین سرآغاز رایانه‌های با برنامه ذخیره‌شونده است و به شدت بر درک فون نویمان از ماشین‌ها و تلاش وی برای تولید کامپیوتر علامت گسسته دیجیتال که EDVAC نام گرفت، تأثیر‌گذار بوده است. همچنین، وی معتقد است که موتور محاسبات خودکار (ACE) تورینگ، رشد و توسعه مفاهیمی مانند programming micro یا code micro و همچنین پردازنده‌های RISC را تسریع کرده است و آن را نخستین کاربرد پشته سخت‌افزاری (Hardware Stack) در دنیای کامپیوترها می‌داند. به اعتقاد وی، همان‌طور که ماشین تورینگ یکی از عوامل اصلی تولید کامپیوتر به شمار می‌آید، ماشین جامع تورینگ نیز یکی از عوامل اصلی توسعه علوم نوپای کامپیوتر (Computer Science) است.

منبع


منابع

https://fa.wikipedia.org/wiki

http://www.shabakeh-mag.com

 

ماشین تورینگ چیست ؟ قسمت ۱
ماشین تورینگ چیست ؟ قسمت ۲
ماشین تورینگ چیست ؟ قسمت ۳