موتور جستجو (پردازش)
موتور جستجو (به انگلیسی: Search Engine) یا جویشگر، در فرهنگ رایانه، به طور عمومی به برنامهای گفته میشود که کلمات کلیدی را در یک سند یا بانک اطلاعاتی جستجو میکند. در اینترنت به برنامهای گفته میشود که کلمات کلیدی موجود در فایلها و سندهای وب جهانی، گروههای خبری، منوهای گوفر و آرشیوهای FTP را جستجو میکند. جویشگر های زیادی وجود دارند که امروزه از معروفترین و پراستفاده ترین آنها میتوان به google و یاهو! جستجو اشاره کرد.

بهینهسازی موتور جستجو
بهینهسازی موتور جستجو (به انگلیسی: Search engine optimization (SEO)) که گاهی در فارسی به آن سئو گفته میشود عملیاتی است که برای بهبود دید یک وبگاه یا یک صفحهٔ وب در صفحه نتایج موتورهای جستجو که میتواند طبیعی و یا الگوریتمی باشد، میگویند. این یکی از روشهای بازاریابی موتور جستجو است. به صورت کلی وبگاههایی که دارای بالاترین مکان و بیشترین تکرار در صفحهٔ نتایج موتورهای جستجو باشند، بازدیدکنندهٔ بیشتری از طریق موتورهای جستجو به دست میآورند.برای وبمسترها یکی از عوامل مهم و حیاتی بدست اوردن کاربران جدید از موتورهای جستجو و بخصوص گوگل می باشد.
تاریخچه
علم سئو در اواسط دهه ۱۹۹۰ توسط وب مستر ها و مدیران سایتهای بزرگ شروع شد. در ابتدا همه وب مسترها می بایست تمام صفحات خود را برای آمدن خزنده ها به سایت آنها ثبت می کردند تا در نهایت صفحات آنها در نتایج جستجو به نمایش گذاشته می شد. امروزه با رشد اینترنت فروش خدمات اینترنتی هم افزایش یافته است.
روشها
شاخص گذاری کردن
موتورهای جستجوی پیشتاز همچون Yahoo!،Google و Bing از خزندهها جهت یافتن صفحات برای نتایج جستجوی الگوریتمیک استفاده میکنند. صفحاتی که از داخل باقی صفحات ایندکس شده توسط موتورهای جستجو Link شدهاند نیاز به ارسال به موتور جستجو نداشته و بصورت خودکار پیدا میشوند. بعضی از موتورهای جستجو ازجمله!Yahoo سرویس پولی ارسال را پیاده میکنند که استفاده از خزندهها را هم بصورت مجموعهای از قیمتها و نیز بصورت سیستم بها به ازاء هر Click، اجرا میکند. این برنامهها معمولاً قرارگیری در بانک اطلاعاتی موتور جستجو را ضمانت کرده و در قبال رتبهای مشخص برای صفحه در لیست نتایج جستجو ضمانتی نمیکنند. دو فهرست اصلی اینترنتی یعنی Yahoo Directory و Open Directory Project، هردو نیاز به ارسال دستی و بررسی انسانی دارند.Google ابزاری به نام Google Webmaster Tools ارائه میدهد که در آن میتوان نقشه سایت را توسط خوراک XML ایجاد کرده و بصورت رایگان ارسال نمود تا از یافته شدن تمام صفحات حتی صفحاتی که بصورت خودکار از طریق دنبال کردن Linkها پیدا نمیشوند، اطمینان حاصل نمود. خزندههای موتورهای جستجو میتوانند به عوامل مختلفی در هنگام خزیدن در یک سایت توجه کنند. تمامی صفحات ایندکس نمیشوند. همچنین فاصله یک صفحه از ریشه سایت میتواند عاملی در پیدا شدن یا عدم آن توسط خزندههای موتورهای جستجو باشد. امروزه بسیاری از شرکتهای مطرح در دنیا به بررسی و اجرای خدمات سئو برای شرکتهای مختلف مشغول هستند.
صفحه فرود یا landing page
یکی از فاکتورهای مهم در خصوص سئو مشخص کردن صفحات فرود یا landing page است.
انتخاب کلید واژههای مناسب
انتخاب کلید واژههای مناسب یکی از فاکتورهای مهم در این رابطهاست که بایستی توسط دارندگان وب سایت و برنامه نویسان در نظر گرفته شود.
جلوگیری از اجرای خزندهها در صفحات
وبمسترها برای جلوگیری از نتایج ناخواسته در شاخصهای جستجومیتوانندعنکبوتهایی توسط فایل استاندارد robots.txt که در فهرست ریشه دامنه ذخیره میشود، بسازند که فایلها و فهرستهای خاصی را مورد خزیدن (Crawl)قرار ندهد.
تولید محتوای جدید و کاربرپسند
یکی از کارهای مهمی که وب مسترها برای بهینه سازی سایت خود و یا سایت های دیگران انجام می دهند تولید محتوای مناسب و جدید برای آن سایت می باشد. محتوای مناسب علاوه بر اینکه بازدید یک سایت را بالا می برد اعتبار سایت را نزد موتورهای جستجو افزایش می دهد و می توانید لینک های طبیعی برای سایت ایجاد کند.
الگوریتم جستجو
در علوم کامپیوتر و ریاضیات، یک الگوریتم جستجو، الگوریتمی است که یک مساله را به عنوان ورودی میگیرد و بعد از ارزیابی کردن راه حلهای ممکن، یک راه حل برای آن مساله برمی گرداند.مجموعهٔ راه حلهای ممکن برای یک مساله را فضای جستجو مینامند.بعضی از الگوریتمها که با عنوان الگوریتمهای ناآگاهانه شناخته میشوند الگوریتمهایی هستند که از متدهای سادهای برای جستجوی فضای نمونه استفاده میکنند.در حالی که الگوریتمهای آگاهانه با استفاده روشهایی مبتنی بر دانش در بارهٔ ساختار فضای جستجو، میکوشند تا زمان جستجو را کاهش دهند.
رده بندی
در کتاب راسل این الگوریتمها به شکل زیر رده بندی شدهاند.
الگوریتمهای ناآگاهانه
الگوریتم نخست-پهنا
الگوریتم نخست-ژرفا
الگوریتمهای آگاهانه
الگوریتم نخست-بهترین
الگوریتم مکاشفهای
جستجوی ناآگاهانه
یک الگوریتم جستجوی ناآگاهانه الگوریتمی است که به ماهیت مساله کاری ندارد.از این رو میتوانند به طور عمومی طراحی شوند و از همان طراحی برای محدودهٔ عظیمی از مسائل استفاده کنند، این امر نیاز به طراحی انتزاعی دارد. از جمله مشکلاتی که این چنین الگوریتمهایی دارند این است که اغلب فضای جستجو بسیار بزرگ است و نیازمند زمان زیادی (حتی برای نمونههای کوچک) میباشد.از این رو برای بالا بردن سرعت پردازش غالبا از الگوریتمهای آگاهانه استفاده میکنند.
جستجوی لیست
الگوریتمهای جستجوی لیست شاید از ابتدایی ترین انواع الگوریتمهای جستجو باشند.هدف آن پیدا کردن یک عنصر از مجموعهای از کلید هاست(ممکن است شامل اطلاعات دیگری مرتبط با آن کلید نیز باشد). ساده ترین این الگوریتمها، الگوریتم جستجوی ترتیبی است که هر عنصر از لیست را با عنصر مورد نظر مقایسه میکند. زمان اجرای این الگوریتم از (O(n است وقتی که n تعداد عناصر در لیست باشد. اما میتوان از روش دیگری استفاده کرد که نیازی به جستجوی تمام لیست نباشد.جستجوی دودویی اندکی از جستجوی خطی است.زمان اجرای آن از(O(lgn است.این روش برای لیستی با تعداد دادهٔ زیاد بسیار کار آمد تر از روش الگوریتم جستجوی ترتیبی است.اما در این روش لیست باید قبل از جستجو مرتب شده باشد.{{جستجو با میان یابی برای دادههای مرتب شده با تعداد زیاد و توزیع یکنواخت، مناسب تر از جستجوی دودویی است.زمان اجرای آن به طور متوسط ((O(lg(lgn است ولی بدترین زمان اجرای آن (O(n میباشد. الگوریتم graver الگوریتم پلهای است که برای لیستهای مرتب نشده استفاده میشود. جدول درهمسازی نیز برای جستجوی لیست به کار میرود. به طور متوسط زمان اجرای ثابتی دارد.اما نیاز به فضای اضافه داشته و بدترین زمان اجرای آن از(O(n است.
جستجوی درختی
الگوریتمهای جستجوی درختی، قلب شیوههای جستجو برای دادههای ساخت یافته هستند.مبنای اصلی جستجوی درختی، گرههایی است که از یک ساختمان داده گرفته شدهاند. هر عنصر که بخواهد اضافه شود با دادههای موجود در گرههای درخت مقایسه میشود و به ساختار درخت اضافه میشود.با تغییر ترتیب دادهها و قرار دادن آنها در درخت، درخت با شیوههای مختلفی جستجو میشود. برای مثال سطح به سطح (جستجوی نخست-پهنا) یا پیمایش معکوس درخت (جستجوی نخست-ژرفا).از مثالهای دیگر جستجوهای درختی میتوان به جستجوی عمقی تکرار شونده، جستجوی عمقی محدود شده، جستجوی دوطرفه، جستجوی هزینه یکنواخت اشاره کرد.
جستجوی گراف
بسیاری از مسائل در نظریهٔ گراف میتواند با الگوریتمها ی پیمایش درخت حل شوند، مثل الگوریتم دیکسترا، الگوریتم کروسکال، الگوریتم نزدیک ترین همسایه و الگوریتم پریم. میتوان این الگوریتمها را توسعه یافتهٔ الگوریتمهای جستجوی درختی دانست.
جستجوی آگاهانه
در یک جستجوی آگاهانه، از نوع خاصی از مسائل به عنوان راهنما استفاده میشود.یک گونهٔ خوب یک جستجوی آگاهانه با کارایی قابل توجهی نسبت به جستجوی ناآگاهانه به وجود میآورد. الگوریتمهای برجستهٔ کمی از جستجوی آگاهانهٔ یک لیست وجود دارد. یکی از این الگوریتمها hash table با یک تابع hash که برمبنای نوع مسالهای که دردست است میباشد.بیشتر الگوریتمهای جستجوی آگاهانه، بسطی از درختها هستند.همانند الگوریتمهای ناآگاهانه، این الگوریتمها برای گرافها نیز میتوانند به کار روند.
جستجوی خصمانه
در یک بازی مثل شطرنج، یک درخت بازی شامل تمام حرکات ممکن توسط هر دو بازیکن و نتایج حاصل از ترکیب این حرکات وجود دارد، و ما میتوانیم این درخت را جستجو کرده و موثرترین استراتژی برای بازی را بیابیم. این چنین مسائلی دارای مشخصهٔ منحصر به فردی هستند.برنامههای بازیهای رایانهای، و همچنین فرمهای هوش مصنوعی مثل برنامه ریزی ماشینها، اغلب از الگوریتمهای جستجو مثل الگوریتم minimax (می نیمیم مجموعهای از ماکزیممها)، هرس کردن درخت جستجو و هرس کردن آلفا-بتا استفاده میکنند.
==الگوریتم اف اسکن==
(FSCAN) F-SCAN یک الگوریتم زمان بندی دیسک است که حرکت آرم و هد دیسک در سرویس دهی درخواستهای خواندن و نوشتن را تعیین میکند. طی روبش تمام درخواستها در صف اول دادهها ی اولیه هستند و تمام درخواستهای جدید در صف دادههای ثانویه قرار داده میشوند. بنا براین سرویس دهی به درخواستهای جدید به تاخیر میافتد تا زمانی که تمام درخواستهای قدیمی تحت پردازش قرار گیرد. هنگامی که روبش پایان مییابد آرم به تمام صف دادههای اولیه برده میشود و دوباره سرتاسر آن شروع میشود.
تحلیل الگوریتم
الگوریتم F-SCAN مطابق N-Step-SCAN از چسبانکی آرم جلوگیری میکند در صورتی که در الگوریتمهای دیگر مانند SSTF، SCAN و C-LOOK چنین امری اتفاق نمیافتد. چسبانکی آرم در الگوریتمهای دیگر وقتی رخ میدهد که هجمهای از درخواستها برای مسیر مشترک موجب میشود تا آرم دیسک توقف پردازش در آن مسیر گردد، از این رو ترجیح داده میشود که هیچ جستجوئی برای درخواستهای آن مسیری که در آن است مورد تایید واقع نشود، از آن جا که F-SCAN درخواستها را به دو صف دادهها جدا میکند، روبرو شدن با درخواستهای جدید به صف دادههای در حال انتظار برده میشود، آرم روبش خود را تا مسیر بیرونی ادامه میدهد و از این رو چسبانکی پیش روی الگوریتم نیست. یک معاوضه آشکار وجود دارد به طوری که درخواستها در صف دادههای در حال انتظار باید انتظار طولانی تر تا برای به اجرا درآوردن بکشند، اما در مبادله F-SCAN برای تمام درخواستهای رضایت بخش تر است.
دیگر متغیرها شامل موارد زیر میشود:
الگوریتم آسانسور –اسکن
LOOK (C-LOOK)
N-Step-SCAN
جستجو سهتایی
جستجو سهتایی
در علوم کامپیوتر رویه ی جستجو ترنری مهارتی برای پیدا کردن مقدار بیشینه و یا کمینه در توابع أکید است. در این رویه مشخص میکنیم که مقدار بیشینه یا کمینه تابع نمیتواند در یک سوم ابتدا یا انتهای دامنه ی تابع وجود داشته باشد. سپس همین شیوه را بر روی دو سوم باقیمانده به کار میبریم. جستجو سهتایی نمومهای از روش الگوریتم_تقسیم_و_حل است
موتور جستجوی وب
موتور جستجوی وب (به انگلیسی: Web search engine) موتور جستجویی است که برای جستجوی اطلاعات تحت محیط وب طراحی شدهاست.
جستجوگر گوگل
جستجوی گوگل (به انگلیسی: Google search) یک موتور جستجو در وب است که تحت مالکیت گوگل قرار دارد. گوگل از راه این وبگاه روزانه صدها میلیون دلار دریافت میکند و این وبگاه در سال ۱۹۹۷ به وجود آمد. دامنهٔ اصلی این سایت در مه ۲۰۰۸ ۱۳۵ میلیون بار بازدید شدهاست. این موتور جستجو بیشترین بازدیدکننده در بین کاربران را دارد. موتور گوگل روزانه چند صد میلیون بار به طرق مختلف استفاده میشود. مهم ترین هدف گوگل یافتن متن مورد نظر در میان صفحات وب است. اما انواع دیگر اطلاعات به وسیله قسمتهای دیگر آن مثل جستجوی تصاویر گوگل، نیز مورد جستجو قرار میگیرند. جستجوگر گوگل توسط لری پیج و سرگئی برین در سال ۱۹۹۷ ساخته شد. این جستجوگر به جز جستجوی واژگان، ۲۲ حالت جستجوی دیگر نیز دارد. مثل جستجوی مترادفها، پیشبینی هوا، محدودههای زمانی (وقت محلی)، قیمت سهام، اطلاعات زلزله، زمان نمایش فیلمها، اطلاعات فرودگاه و.... همچنین مختص اعداد، امکانات ویژهای وجود دارد مانند بازه (۷۰...۸۰)، دماها، واحدهای پول و تبدیل اینها به هم، عبارات محاسباتی (\tan 30 + \ln y^3 ) و... ترتیب قرارگرفتن نتایج جستجوی گوگل بستگی به عاملی به نام رنک (به انگلیسی: Rank) صفحه دارد. جستجوی گوگل با به کاربردن عملگرهای جبر بولی مانند شمول و عدم شمول گزینههای زیادی را برای کاربران قابل تنظیم کردهاست.(به انگلیسی: Advanced search)
بینالمللی
گوگل به زبانها و دامنههای مختلفی فعالیت میکند.
آفریکانس
آلبانیایی
آمهاری
عربی
آرامی
آذربایجانی
باسکی
بلاروسی
بنگالی
بیهاری
بوسنیایی
زبان برتون
بلغاری
خمر
زبان کاتالان
چینی (ساده)
چینی (سنتی)
زبان کرسی
کرواتی
چک
دانمارکی
زبان آلمانی
انگلیسی
اسپرانتو
استونیایی
فارویی
فیلیپینی
فنلاندی
فرانسوی
فریسی غربی
گالیشی
گرجی
آلمانی
یونانی
گوارانی
گجراتی
عبری
هندی
مجاری
ایسلندی
اندونزیایی
زبان اینترلینگوا
ایرلندی
ایتالیایی
ژاپنی
جاوهای
کانارا
قزاقی
کرهای
کردی
قرقیزی
لائوسی
لاتین
لتونیایی
زبان لینگالایی
لیتوانیایی
مقدونی
مالایی
زبان مالایالم
مالتی
مائوری
مراتی
مولداویایی (زبان)
مغولی
نپالی
نروژی
نروژی (نو)
اوستی
زبان اوریه
پشتو
فارسی
لهستانی
پرتغالی (برزیل)
پرتغالی (پرتغال)
پنجابی
کویچوا
رومانیایی
رومنش
روسی
زبان گالیک اسکاتلندی
صربی
صربوکرواتی
زبان سوتو
زبان شونا
سندی
سینهالی
اسلواکیایی
اسلوونیایی
سومالی
اسپانیایی
زبان سوندایی
سواحیلی
سوئدی
تاگالوگ
تاجیک
تامیل
تاتار
تلوگو
تایلندی
زبان تیگرینیا
تونگا
ترکی
ترکمنی
زبان اکانی
اویغوری
اکراینی
اردو
ازبکی
ویتنامی
ولزی
خوزا
ییدیش
زبان یوروبایی
زولو
یاهو! جستجو
یاهو! جستجو (به انگلیسی: Yahoo! Search) یک موتور جستجوگر اینترنتی است که در ۱۹۹۵ توسط شرکت یاهو! راهاندازی شد. طبق آمار نت اپلیکیشنز (به انگلیسی: Net Applications) یاهو! جستجو دومین موتور جستجوگر پربازدید با ۶٬۴۲% بازدید موتورهای جویشگر پس از جستجوگر گوگل با ۸۵٬۳۵% میزان بازدید و بالاتر از موتور جویشگر بایدو با ۳٬۶۷% است.
زبانها
یاهو! جستجو رابط جستجوگر خود را حداقل در ۳۸ زبان گوناگون و بینالمللی در دسترس گذاشتهاست.
زبانها
عربی
بلغاری
کاتالان
چینی ساده
چینی سنتی
کرواتی
چکی
دانمارکی
هلندی
انگلیسی
استونیایی
فنلاندی
فرانسوی
آلمانی
یونانی
عبری
مجارستانی
ایسلندی
اندونزیایی
ایتالیایی
ژاپنی
کرهای
لتونیایی
لیتوانیایی
مالایی
نروژی
فارسی
لهستانی
پرتغالی
رومانیایی
روسی
صربی
اسلواکیایی
اسلونیایی
اسپانیایی
سوئدی
تاگالوگ
تایلندی
ترکی استانبولی
ویتنامی
الگوریتم جستجوی عمق اول
در نظریهٔ گراف، جستجوی عمق اول (به انگلیسی: Depth-first Search، بهاختصار DFS) یک الگوریتم پیمایش گراف است که برای پیمایش یا جستجوی یک درخت یا یک گراف به کار میرود.
استراتژی جستجوی عمق اول برای پیمایش گراف، همانطور که از نامش پیداست "جستجوی عمیقتر در گراف تا زمانی که امکان دارد" است.
چگونه کار میکند؟
الگوریتم از ریشه شروع میکند (در گرافها و یا درختهای بدون ریشه راس دلخواهی به عنوان ریشه انتخاب میشود) و در هر مرحله همسایههای رأس جاری را از طریق یالهای خروجی رأس جاری به ترتیب بررسی کرده و به محض روبهرو شدن با همسایهای که قبلاً دیده نشده باشد، به صورت بازگشتی برای آن رأس به عنوان رأس جاری اجرا میشود. در صورتی که همهٔ همسایهها قبلاً دیده شده باشند، الگوریتم عقبگرد میکند و اجرای الگوریتم برای رأسی که از آن به رأس جاری رسیدهایم، ادامه مییابد. به عبارتی الگوریتم تا آنجا که ممکن است، به عمق بیشتر و بیشتر میرود و در مواجهه با بن بست عقبگرد میکند. این فرایند تامادامیکه همهٔ رأسهای قابل دستیابی از ریشه دیده شوند ادامه مییابد.
همچنین در مسائلی که حالات مختلف متناظر با رئوس یک گرافاند و حل مسئله مستلزم یافتن رأس هدف با خصوصیات مشخصی است، جستجوی عمق اول به صورت غیرخلاق عمل میکند. بدینترتیب که هر دفعه الگوریتم به اولین همسایهٔ یک رأس در گراف جستجو و در نتیجه هر دفعه به عمق بیشتر و بیشتر در گراف میرود تا به رأسی برسد که همهٔ همسایگانش دیده شدهاند که در حالت اخیر، الگوریتم به اولین رأسی بر میگردد که همسایهٔ داشته باشد که هنوز دیده نشده باشد. این روند تا جایی ادامه مییابد که رأس هدف پیدا شود و یا احتمالاً همهٔ گراف پیمایش شود. البته پیادهسازی هوشمندانهٔ الگوریتم با انتخاب ترتیب مناسب برای بررسی همسایههای دیده نشدهٔ رأس جاری به صورتی که ابتدا الگوریتم به بررسی همسایهای بپردازد که به صورت موضعی و با انتخابی حریصانه به رأس هدف نزدیکتر است، امکانپذیر خواهد بود که معمولاً در کاهش زمان اجرا مؤثر است.
از نقطه نظر عملی، برای اجرای الگوریتم، از یک پشته (stack) استفاده میشود. بدین ترتیب که هر بار با ورود به یک رأس دیده نشده، آن رأس را در پشته قرار میدهیم و هنگام عقبگرد رأس را از پشته حذف میکنیم. بنابراین در تمام طول الگوریتم اولین عنصر پشته رأس در حال بررسی است. جزئیات پیادهسازی در ادامه خواهد آمد.
وقتی در گرافهای بزرگی جستجو میکنیم که امکان ذخیرهٔ کامل آنها به علت محدودیت حافظه وجود ندارد، در صورتی که طول مسیر پیمایش شده توسط الگوریتم که از ریشه شروع شده، خیلی بزرگ شود، الگوریتم با مشکل مواجه خواهد شد. در واقع این راهحل ساده که "رئوسی را که تا به حال دیدهایم ذخیره کنیم" همیشه کار نمیکند. چراکه ممکن است حافظهٔ کافی برای این کار نداشته باشیم. البته این مشکل با محدود کردن عمق جستجو در هر بار اجرای الگوریتم حل میشود که در نهایت به الگوریتم تعمیق تکراری (Iterative Deepening) خواهد انجامید.
الگوریتم
پیمایش با انتخاب رأس r به عنوان ریشه آغاز میشود. r به عنوان یک رأس دیده شده برچسب میخورد. رأس دلخواه r_1 از همسایگان r انتخاب شده و الگوریتم به صورت بازگشتی از r_1 به عنوان ریشه ادامه مییابد.از این پس در هر مرحله وقتی در رأسی مانند v قرار گرفتیم که همهٔ همسایگانش دیده شدهاند، اجرای الگوریتم را برای آن رأس خاتمه میدهیم. حال اگر بعد از اجرای الگوریتم با ریشهٔ r_1 همهٔ همسایگان r برچسب خورده باشند، الگوریتم پایان مییابد. در غیر این صورت رأس دلخواه r_2 از همسایگان r را که هنوز برچسب نخورده انتخاب میکنیم و جستجو را به صورت بازگشتی از r_2 به عنوان ریشه ادامه میدهیم. این روند تامادامیکه همهٔ همسایگان r برچسب نخوردهاند ادامه مییابد.
البته پیمایش گراف برای تأمین هدفی صورت میگیرد. بر این اساس برای انعطاف پذیر ساختن الگوریتم در قبال کاربردهای مختلف، دو نوع عملیات preWORK و postWORK را به همراهِ بازدید از هر رأس یا یال انجام میدهیم، که preWORK در زمان برچسب خوردنِ رأسِ در حال بازدید، و postWORK بعد از بررسی هر یالِ خروجی از رأسِ در حال بازدید انجام خواهد شد. هر دوی این عملیات وابسته به هدفِ استفاده از الگوریتم، مشخص خواهند شد.
الگوریتم بازگشتی جستجوی اول عمق به صورت زير است. آرايه يک بعدی Visited تعيين می کند آيا راسی قبلاً ملاقات شده است يا خير
الگوریتم جستجوی اول سطح
در نظریهٔ گراف، جستجوی اول سطح (به انگلیسی: Breadth-first Search، بهاختصار: BFS) یکی از الگوریتمهای پیمایش گراف است.
استراتژی جستجوی سطح اول برای پیمایش گراف، همانطور که از نامش پیداست «جستجوی سطح به سطح گراف» است.
چگونه کار میکند؟
الگوریتم از ریشه شروع میکند (در گرافها و یا درختهای بدون ریشه رأس دلخواهی به عنوان ریشه انتخاب میشود) و آن را در سطح یک قرار میدهد. سپس در هر مرحله همهٔ همسایههای رئوس آخرین سطح دیده شده را که تا به حال دیده نشدهاند بازدید میکند و آنها را در سطح بعدی میگذارد. این فرایند زمانی متوقف میشود که همهٔ همسایههای رئوس آخرین سطح قبلاً دیده شده باشند. همچنین در مسائلی که حالات مختلف متناظر با رئوس یک گرافاند و حل مسئله مستلزم یافتن رأس هدف با خصوصیات مشخصی است که در عین حال در بین همهٔ رئوس هدف با آن خصوصیات به ریشه نزدیکترین باشد، جستجوی سطح اول به صورت غیرخلاق عمل میکند. بدین ترتیب که الگوریتم هر دفعه همهٔ همسایههای یک رأس را بازدید کرده و سپس به سراغ رأس بعدی میرود و بنابراین گراف سطح به سطح پیمایش خواهد شد. این روند تا جایی ادامه مییابد که رأس هدف پیدا شود و یا احتمالاً همهٔ گراف پیمایش شود. براساس آنچه گفته شد پیادهسازی هوشمندانهٔ الگوریتم آنقدر مؤثر نخواهد بود.
از نقطه نظر عملی، برای پیادهسازی این الگوریتم از صف استفاده میشود. بدین ترتیب که در ابتدا ریشه در صف قرار میگیرد. سپس هر دفعه عنصر ابتدای صف بیرون کشیده شده، همسایگانش بررسی شده و هر همسایهای که تا به حال دیده نشده باشد به انتهای صف اضافه میشود. جزئیات پیادهسازی در ادامه خواهد آمد.
الگوریتم
پیادهسازی این الگوریتم مشابه پیادهسازی جستجوی عمق اول است با این تفاوت که به جای پشته از صف استفاده میشود. در این جا نیز مانند جستجوی عمق اول، preWORK را برای انعطاف بیشتر الگوریتم در نظر میگیریم که در زمان بررسی کردن هر رأس خارج شده از صف انجام میشود.
الگوريتم جستجوی اول سطح به صورت زير است. آرايه Visited برای تعيين رئوس ملاقات شده بکار می رود. از يک صف برای نگهداشتن رئوس مجاور استفاده می شود. هر بار که راسی ملاقات می شود کليه رئوس مجاور آن در صف اضافه می شود. پيمايش از راسی که از صف برداشته می شود ادامه پيدا می کند.
مرتبسازی دایرهای
مرتب سازی دایرهای (به انگلیسی: Cycle sort) یا مرتبسازی درجا یا الگریتم مرتبسازی ناپایدار، یک مرتب سازی مقایسهای که تئوری خوبی از نظر تعداد عناصر نوشتهشده در آرایهٔ اصلی است، بر خلاف تمام الگوریتمهای مرتبسازی. این بر اساس ایدهای است که جایگشت میتواندفاکتوری برای مرتب سازی باشد، که به صورت جداگانه چرخش برای بدست آمدن نتیجه ایجاد شود.
بر خلاف تمام الگوریتمهای نزدیک به آن، دادهها در جای دیگر آرایه به سادگی نوشته نمیشوندتا آنها را از عملیات خارج کنیم. هر مقداردهی در زمان صفر صورت میگیرد اگر درآن زمان در مکان درست خودش موجود باشد، ویا در جای درس در یک زمان نوشته میشود. این مسابقه نیازمند دوباره کاری کمتری برای مرتبسازی درجا است. کم کردن تعداد نوشتنها زمانی که تعداد زیادی از دادهها را قرار است که ذخیره کنیم بسیار سودمند است، مانند EEPROMها یا Flash memory که نوشتن عمر مفید دستگاه را کاهش میدهد. الگوریتم: الگوریتم زیر پیدا میکند با چرخش و دوراندن آن و نتیجهٔ مرتب شده را به ما میدهد. توجه داشتهباشید که range(a, b) از مقدار a تا b – 1 است.
جستجوی ابتدا بهترین
جستجوی بهترین ابتدا (best-first search) یک الگوریتم جستجو است که یک گراف را با بسط دادن محتملترین نود که بنابر قوانین خاص انتخاب میشوند پیمایش میکند.
این نوع جستجو را به عنوان تخمین احتمال انتخاب نود N به وسیلهٔ heuristic evaluation function که به صورت کلی، ممکن است بر پایه توصیف N، توصیف هدف، اطلاعات جمع اوری شده به وسیلهٔ جستجو تا ان نقطه و هر گونه اطلاعات اضافی در زمینهٔ مساله توصیف میکند.
بعصی از نویسندگان از جستجوی اولویت بهترینها استفاده میکنند تا به طور خاص به یک جستجو با یک اشاره کنند که تلاش میکند تا پیشبینی کند که چقدر پایان یک مسیر به راه حل نزدیکتر است، بنابر این ان مسیرهایی که نزدیکتر به جواب هستند اول بسط داده شوند. الگوریتم جستجوی یک نمونه از الگوریتم بهترینها-اول است. الگوریتم بهترینها-اول معمولاً برای پیدا کردن پیدا کردن مسیر در جستجوهای ترکیبی استفاده میشود.
موتور جستجو (به انگلیسی: Search Engine) یا جویشگر، در فرهنگ رایانه، به طور عمومی به برنامهای گفته میشود که کلمات کلیدی را در یک سند یا بانک اطلاعاتی جستجو میکند. در اینترنت به برنامهای گفته میشود که کلمات کلیدی موجود در فایلها و سندهای وب جهانی، گروههای خبری، منوهای گوفر و آرشیوهای FTP را جستجو میکند. جویشگر های زیادی وجود دارند که امروزه از معروفترین و پراستفاده ترین آنها میتوان به google و یاهو! جستجو اشاره کرد.

بهینهسازی موتور جستجو
بهینهسازی موتور جستجو (به انگلیسی: Search engine optimization (SEO)) که گاهی در فارسی به آن سئو گفته میشود عملیاتی است که برای بهبود دید یک وبگاه یا یک صفحهٔ وب در صفحه نتایج موتورهای جستجو که میتواند طبیعی و یا الگوریتمی باشد، میگویند. این یکی از روشهای بازاریابی موتور جستجو است. به صورت کلی وبگاههایی که دارای بالاترین مکان و بیشترین تکرار در صفحهٔ نتایج موتورهای جستجو باشند، بازدیدکنندهٔ بیشتری از طریق موتورهای جستجو به دست میآورند.برای وبمسترها یکی از عوامل مهم و حیاتی بدست اوردن کاربران جدید از موتورهای جستجو و بخصوص گوگل می باشد.
تاریخچه
علم سئو در اواسط دهه ۱۹۹۰ توسط وب مستر ها و مدیران سایتهای بزرگ شروع شد. در ابتدا همه وب مسترها می بایست تمام صفحات خود را برای آمدن خزنده ها به سایت آنها ثبت می کردند تا در نهایت صفحات آنها در نتایج جستجو به نمایش گذاشته می شد. امروزه با رشد اینترنت فروش خدمات اینترنتی هم افزایش یافته است.
روشها
شاخص گذاری کردن
موتورهای جستجوی پیشتاز همچون Yahoo!،Google و Bing از خزندهها جهت یافتن صفحات برای نتایج جستجوی الگوریتمیک استفاده میکنند. صفحاتی که از داخل باقی صفحات ایندکس شده توسط موتورهای جستجو Link شدهاند نیاز به ارسال به موتور جستجو نداشته و بصورت خودکار پیدا میشوند. بعضی از موتورهای جستجو ازجمله!Yahoo سرویس پولی ارسال را پیاده میکنند که استفاده از خزندهها را هم بصورت مجموعهای از قیمتها و نیز بصورت سیستم بها به ازاء هر Click، اجرا میکند. این برنامهها معمولاً قرارگیری در بانک اطلاعاتی موتور جستجو را ضمانت کرده و در قبال رتبهای مشخص برای صفحه در لیست نتایج جستجو ضمانتی نمیکنند. دو فهرست اصلی اینترنتی یعنی Yahoo Directory و Open Directory Project، هردو نیاز به ارسال دستی و بررسی انسانی دارند.Google ابزاری به نام Google Webmaster Tools ارائه میدهد که در آن میتوان نقشه سایت را توسط خوراک XML ایجاد کرده و بصورت رایگان ارسال نمود تا از یافته شدن تمام صفحات حتی صفحاتی که بصورت خودکار از طریق دنبال کردن Linkها پیدا نمیشوند، اطمینان حاصل نمود. خزندههای موتورهای جستجو میتوانند به عوامل مختلفی در هنگام خزیدن در یک سایت توجه کنند. تمامی صفحات ایندکس نمیشوند. همچنین فاصله یک صفحه از ریشه سایت میتواند عاملی در پیدا شدن یا عدم آن توسط خزندههای موتورهای جستجو باشد. امروزه بسیاری از شرکتهای مطرح در دنیا به بررسی و اجرای خدمات سئو برای شرکتهای مختلف مشغول هستند.
صفحه فرود یا landing page
یکی از فاکتورهای مهم در خصوص سئو مشخص کردن صفحات فرود یا landing page است.
انتخاب کلید واژههای مناسب
انتخاب کلید واژههای مناسب یکی از فاکتورهای مهم در این رابطهاست که بایستی توسط دارندگان وب سایت و برنامه نویسان در نظر گرفته شود.
جلوگیری از اجرای خزندهها در صفحات
وبمسترها برای جلوگیری از نتایج ناخواسته در شاخصهای جستجومیتوانندعنکبوتهایی توسط فایل استاندارد robots.txt که در فهرست ریشه دامنه ذخیره میشود، بسازند که فایلها و فهرستهای خاصی را مورد خزیدن (Crawl)قرار ندهد.
تولید محتوای جدید و کاربرپسند
یکی از کارهای مهمی که وب مسترها برای بهینه سازی سایت خود و یا سایت های دیگران انجام می دهند تولید محتوای مناسب و جدید برای آن سایت می باشد. محتوای مناسب علاوه بر اینکه بازدید یک سایت را بالا می برد اعتبار سایت را نزد موتورهای جستجو افزایش می دهد و می توانید لینک های طبیعی برای سایت ایجاد کند.
الگوریتم جستجو
در علوم کامپیوتر و ریاضیات، یک الگوریتم جستجو، الگوریتمی است که یک مساله را به عنوان ورودی میگیرد و بعد از ارزیابی کردن راه حلهای ممکن، یک راه حل برای آن مساله برمی گرداند.مجموعهٔ راه حلهای ممکن برای یک مساله را فضای جستجو مینامند.بعضی از الگوریتمها که با عنوان الگوریتمهای ناآگاهانه شناخته میشوند الگوریتمهایی هستند که از متدهای سادهای برای جستجوی فضای نمونه استفاده میکنند.در حالی که الگوریتمهای آگاهانه با استفاده روشهایی مبتنی بر دانش در بارهٔ ساختار فضای جستجو، میکوشند تا زمان جستجو را کاهش دهند.
رده بندی
در کتاب راسل این الگوریتمها به شکل زیر رده بندی شدهاند.
الگوریتمهای ناآگاهانه
الگوریتم نخست-پهنا
الگوریتم نخست-ژرفا
الگوریتمهای آگاهانه
الگوریتم نخست-بهترین
الگوریتم مکاشفهای
جستجوی ناآگاهانه
یک الگوریتم جستجوی ناآگاهانه الگوریتمی است که به ماهیت مساله کاری ندارد.از این رو میتوانند به طور عمومی طراحی شوند و از همان طراحی برای محدودهٔ عظیمی از مسائل استفاده کنند، این امر نیاز به طراحی انتزاعی دارد. از جمله مشکلاتی که این چنین الگوریتمهایی دارند این است که اغلب فضای جستجو بسیار بزرگ است و نیازمند زمان زیادی (حتی برای نمونههای کوچک) میباشد.از این رو برای بالا بردن سرعت پردازش غالبا از الگوریتمهای آگاهانه استفاده میکنند.
جستجوی لیست
الگوریتمهای جستجوی لیست شاید از ابتدایی ترین انواع الگوریتمهای جستجو باشند.هدف آن پیدا کردن یک عنصر از مجموعهای از کلید هاست(ممکن است شامل اطلاعات دیگری مرتبط با آن کلید نیز باشد). ساده ترین این الگوریتمها، الگوریتم جستجوی ترتیبی است که هر عنصر از لیست را با عنصر مورد نظر مقایسه میکند. زمان اجرای این الگوریتم از (O(n است وقتی که n تعداد عناصر در لیست باشد. اما میتوان از روش دیگری استفاده کرد که نیازی به جستجوی تمام لیست نباشد.جستجوی دودویی اندکی از جستجوی خطی است.زمان اجرای آن از(O(lgn است.این روش برای لیستی با تعداد دادهٔ زیاد بسیار کار آمد تر از روش الگوریتم جستجوی ترتیبی است.اما در این روش لیست باید قبل از جستجو مرتب شده باشد.{{جستجو با میان یابی برای دادههای مرتب شده با تعداد زیاد و توزیع یکنواخت، مناسب تر از جستجوی دودویی است.زمان اجرای آن به طور متوسط ((O(lg(lgn است ولی بدترین زمان اجرای آن (O(n میباشد. الگوریتم graver الگوریتم پلهای است که برای لیستهای مرتب نشده استفاده میشود. جدول درهمسازی نیز برای جستجوی لیست به کار میرود. به طور متوسط زمان اجرای ثابتی دارد.اما نیاز به فضای اضافه داشته و بدترین زمان اجرای آن از(O(n است.
جستجوی درختی
الگوریتمهای جستجوی درختی، قلب شیوههای جستجو برای دادههای ساخت یافته هستند.مبنای اصلی جستجوی درختی، گرههایی است که از یک ساختمان داده گرفته شدهاند. هر عنصر که بخواهد اضافه شود با دادههای موجود در گرههای درخت مقایسه میشود و به ساختار درخت اضافه میشود.با تغییر ترتیب دادهها و قرار دادن آنها در درخت، درخت با شیوههای مختلفی جستجو میشود. برای مثال سطح به سطح (جستجوی نخست-پهنا) یا پیمایش معکوس درخت (جستجوی نخست-ژرفا).از مثالهای دیگر جستجوهای درختی میتوان به جستجوی عمقی تکرار شونده، جستجوی عمقی محدود شده، جستجوی دوطرفه، جستجوی هزینه یکنواخت اشاره کرد.
جستجوی گراف
بسیاری از مسائل در نظریهٔ گراف میتواند با الگوریتمها ی پیمایش درخت حل شوند، مثل الگوریتم دیکسترا، الگوریتم کروسکال، الگوریتم نزدیک ترین همسایه و الگوریتم پریم. میتوان این الگوریتمها را توسعه یافتهٔ الگوریتمهای جستجوی درختی دانست.
جستجوی آگاهانه
در یک جستجوی آگاهانه، از نوع خاصی از مسائل به عنوان راهنما استفاده میشود.یک گونهٔ خوب یک جستجوی آگاهانه با کارایی قابل توجهی نسبت به جستجوی ناآگاهانه به وجود میآورد. الگوریتمهای برجستهٔ کمی از جستجوی آگاهانهٔ یک لیست وجود دارد. یکی از این الگوریتمها hash table با یک تابع hash که برمبنای نوع مسالهای که دردست است میباشد.بیشتر الگوریتمهای جستجوی آگاهانه، بسطی از درختها هستند.همانند الگوریتمهای ناآگاهانه، این الگوریتمها برای گرافها نیز میتوانند به کار روند.
جستجوی خصمانه
در یک بازی مثل شطرنج، یک درخت بازی شامل تمام حرکات ممکن توسط هر دو بازیکن و نتایج حاصل از ترکیب این حرکات وجود دارد، و ما میتوانیم این درخت را جستجو کرده و موثرترین استراتژی برای بازی را بیابیم. این چنین مسائلی دارای مشخصهٔ منحصر به فردی هستند.برنامههای بازیهای رایانهای، و همچنین فرمهای هوش مصنوعی مثل برنامه ریزی ماشینها، اغلب از الگوریتمهای جستجو مثل الگوریتم minimax (می نیمیم مجموعهای از ماکزیممها)، هرس کردن درخت جستجو و هرس کردن آلفا-بتا استفاده میکنند.
==الگوریتم اف اسکن==
(FSCAN) F-SCAN یک الگوریتم زمان بندی دیسک است که حرکت آرم و هد دیسک در سرویس دهی درخواستهای خواندن و نوشتن را تعیین میکند. طی روبش تمام درخواستها در صف اول دادهها ی اولیه هستند و تمام درخواستهای جدید در صف دادههای ثانویه قرار داده میشوند. بنا براین سرویس دهی به درخواستهای جدید به تاخیر میافتد تا زمانی که تمام درخواستهای قدیمی تحت پردازش قرار گیرد. هنگامی که روبش پایان مییابد آرم به تمام صف دادههای اولیه برده میشود و دوباره سرتاسر آن شروع میشود.
تحلیل الگوریتم
الگوریتم F-SCAN مطابق N-Step-SCAN از چسبانکی آرم جلوگیری میکند در صورتی که در الگوریتمهای دیگر مانند SSTF، SCAN و C-LOOK چنین امری اتفاق نمیافتد. چسبانکی آرم در الگوریتمهای دیگر وقتی رخ میدهد که هجمهای از درخواستها برای مسیر مشترک موجب میشود تا آرم دیسک توقف پردازش در آن مسیر گردد، از این رو ترجیح داده میشود که هیچ جستجوئی برای درخواستهای آن مسیری که در آن است مورد تایید واقع نشود، از آن جا که F-SCAN درخواستها را به دو صف دادهها جدا میکند، روبرو شدن با درخواستهای جدید به صف دادههای در حال انتظار برده میشود، آرم روبش خود را تا مسیر بیرونی ادامه میدهد و از این رو چسبانکی پیش روی الگوریتم نیست. یک معاوضه آشکار وجود دارد به طوری که درخواستها در صف دادههای در حال انتظار باید انتظار طولانی تر تا برای به اجرا درآوردن بکشند، اما در مبادله F-SCAN برای تمام درخواستهای رضایت بخش تر است.
دیگر متغیرها شامل موارد زیر میشود:
الگوریتم آسانسور –اسکن
LOOK (C-LOOK)
N-Step-SCAN
جستجو سهتایی
جستجو سهتایی
در علوم کامپیوتر رویه ی جستجو ترنری مهارتی برای پیدا کردن مقدار بیشینه و یا کمینه در توابع أکید است. در این رویه مشخص میکنیم که مقدار بیشینه یا کمینه تابع نمیتواند در یک سوم ابتدا یا انتهای دامنه ی تابع وجود داشته باشد. سپس همین شیوه را بر روی دو سوم باقیمانده به کار میبریم. جستجو سهتایی نمومهای از روش الگوریتم_تقسیم_و_حل است
موتور جستجوی وب
موتور جستجوی وب (به انگلیسی: Web search engine) موتور جستجویی است که برای جستجوی اطلاعات تحت محیط وب طراحی شدهاست.
جستجوگر گوگل
جستجوی گوگل (به انگلیسی: Google search) یک موتور جستجو در وب است که تحت مالکیت گوگل قرار دارد. گوگل از راه این وبگاه روزانه صدها میلیون دلار دریافت میکند و این وبگاه در سال ۱۹۹۷ به وجود آمد. دامنهٔ اصلی این سایت در مه ۲۰۰۸ ۱۳۵ میلیون بار بازدید شدهاست. این موتور جستجو بیشترین بازدیدکننده در بین کاربران را دارد. موتور گوگل روزانه چند صد میلیون بار به طرق مختلف استفاده میشود. مهم ترین هدف گوگل یافتن متن مورد نظر در میان صفحات وب است. اما انواع دیگر اطلاعات به وسیله قسمتهای دیگر آن مثل جستجوی تصاویر گوگل، نیز مورد جستجو قرار میگیرند. جستجوگر گوگل توسط لری پیج و سرگئی برین در سال ۱۹۹۷ ساخته شد. این جستجوگر به جز جستجوی واژگان، ۲۲ حالت جستجوی دیگر نیز دارد. مثل جستجوی مترادفها، پیشبینی هوا، محدودههای زمانی (وقت محلی)، قیمت سهام، اطلاعات زلزله، زمان نمایش فیلمها، اطلاعات فرودگاه و.... همچنین مختص اعداد، امکانات ویژهای وجود دارد مانند بازه (۷۰...۸۰)، دماها، واحدهای پول و تبدیل اینها به هم، عبارات محاسباتی (\tan 30 + \ln y^3 ) و... ترتیب قرارگرفتن نتایج جستجوی گوگل بستگی به عاملی به نام رنک (به انگلیسی: Rank) صفحه دارد. جستجوی گوگل با به کاربردن عملگرهای جبر بولی مانند شمول و عدم شمول گزینههای زیادی را برای کاربران قابل تنظیم کردهاست.(به انگلیسی: Advanced search)
بینالمللی
گوگل به زبانها و دامنههای مختلفی فعالیت میکند.
آفریکانس
آلبانیایی
آمهاری
عربی
آرامی
آذربایجانی
باسکی
بلاروسی
بنگالی
بیهاری
بوسنیایی
زبان برتون
بلغاری
خمر
زبان کاتالان
چینی (ساده)
چینی (سنتی)
زبان کرسی
کرواتی
چک
دانمارکی
زبان آلمانی
انگلیسی
اسپرانتو
استونیایی
فارویی
فیلیپینی
فنلاندی
فرانسوی
فریسی غربی
گالیشی
گرجی
آلمانی
یونانی
گوارانی
گجراتی
عبری
هندی
مجاری
ایسلندی
اندونزیایی
زبان اینترلینگوا
ایرلندی
ایتالیایی
ژاپنی
جاوهای
کانارا
قزاقی
کرهای
کردی
قرقیزی
لائوسی
لاتین
لتونیایی
زبان لینگالایی
لیتوانیایی
مقدونی
مالایی
زبان مالایالم
مالتی
مائوری
مراتی
مولداویایی (زبان)
مغولی
نپالی
نروژی
نروژی (نو)
اوستی
زبان اوریه
پشتو
فارسی
لهستانی
پرتغالی (برزیل)
پرتغالی (پرتغال)
پنجابی
کویچوا
رومانیایی
رومنش
روسی
زبان گالیک اسکاتلندی
صربی
صربوکرواتی
زبان سوتو
زبان شونا
سندی
سینهالی
اسلواکیایی
اسلوونیایی
سومالی
اسپانیایی
زبان سوندایی
سواحیلی
سوئدی
تاگالوگ
تاجیک
تامیل
تاتار
تلوگو
تایلندی
زبان تیگرینیا
تونگا
ترکی
ترکمنی
زبان اکانی
اویغوری
اکراینی
اردو
ازبکی
ویتنامی
ولزی
خوزا
ییدیش
زبان یوروبایی
زولو
یاهو! جستجو
یاهو! جستجو (به انگلیسی: Yahoo! Search) یک موتور جستجوگر اینترنتی است که در ۱۹۹۵ توسط شرکت یاهو! راهاندازی شد. طبق آمار نت اپلیکیشنز (به انگلیسی: Net Applications) یاهو! جستجو دومین موتور جستجوگر پربازدید با ۶٬۴۲% بازدید موتورهای جویشگر پس از جستجوگر گوگل با ۸۵٬۳۵% میزان بازدید و بالاتر از موتور جویشگر بایدو با ۳٬۶۷% است.
زبانها
یاهو! جستجو رابط جستجوگر خود را حداقل در ۳۸ زبان گوناگون و بینالمللی در دسترس گذاشتهاست.
زبانها
عربی
بلغاری
کاتالان
چینی ساده
چینی سنتی
کرواتی
چکی
دانمارکی
هلندی
انگلیسی
استونیایی
فنلاندی
فرانسوی
آلمانی
یونانی
عبری
مجارستانی
ایسلندی
اندونزیایی
ایتالیایی
ژاپنی
کرهای
لتونیایی
لیتوانیایی
مالایی
نروژی
فارسی
لهستانی
پرتغالی
رومانیایی
روسی
صربی
اسلواکیایی
اسلونیایی
اسپانیایی
سوئدی
تاگالوگ
تایلندی
ترکی استانبولی
ویتنامی
الگوریتم جستجوی عمق اول
در نظریهٔ گراف، جستجوی عمق اول (به انگلیسی: Depth-first Search، بهاختصار DFS) یک الگوریتم پیمایش گراف است که برای پیمایش یا جستجوی یک درخت یا یک گراف به کار میرود.
استراتژی جستجوی عمق اول برای پیمایش گراف، همانطور که از نامش پیداست "جستجوی عمیقتر در گراف تا زمانی که امکان دارد" است.
چگونه کار میکند؟
الگوریتم از ریشه شروع میکند (در گرافها و یا درختهای بدون ریشه راس دلخواهی به عنوان ریشه انتخاب میشود) و در هر مرحله همسایههای رأس جاری را از طریق یالهای خروجی رأس جاری به ترتیب بررسی کرده و به محض روبهرو شدن با همسایهای که قبلاً دیده نشده باشد، به صورت بازگشتی برای آن رأس به عنوان رأس جاری اجرا میشود. در صورتی که همهٔ همسایهها قبلاً دیده شده باشند، الگوریتم عقبگرد میکند و اجرای الگوریتم برای رأسی که از آن به رأس جاری رسیدهایم، ادامه مییابد. به عبارتی الگوریتم تا آنجا که ممکن است، به عمق بیشتر و بیشتر میرود و در مواجهه با بن بست عقبگرد میکند. این فرایند تامادامیکه همهٔ رأسهای قابل دستیابی از ریشه دیده شوند ادامه مییابد.
همچنین در مسائلی که حالات مختلف متناظر با رئوس یک گرافاند و حل مسئله مستلزم یافتن رأس هدف با خصوصیات مشخصی است، جستجوی عمق اول به صورت غیرخلاق عمل میکند. بدینترتیب که هر دفعه الگوریتم به اولین همسایهٔ یک رأس در گراف جستجو و در نتیجه هر دفعه به عمق بیشتر و بیشتر در گراف میرود تا به رأسی برسد که همهٔ همسایگانش دیده شدهاند که در حالت اخیر، الگوریتم به اولین رأسی بر میگردد که همسایهٔ داشته باشد که هنوز دیده نشده باشد. این روند تا جایی ادامه مییابد که رأس هدف پیدا شود و یا احتمالاً همهٔ گراف پیمایش شود. البته پیادهسازی هوشمندانهٔ الگوریتم با انتخاب ترتیب مناسب برای بررسی همسایههای دیده نشدهٔ رأس جاری به صورتی که ابتدا الگوریتم به بررسی همسایهای بپردازد که به صورت موضعی و با انتخابی حریصانه به رأس هدف نزدیکتر است، امکانپذیر خواهد بود که معمولاً در کاهش زمان اجرا مؤثر است.
از نقطه نظر عملی، برای اجرای الگوریتم، از یک پشته (stack) استفاده میشود. بدین ترتیب که هر بار با ورود به یک رأس دیده نشده، آن رأس را در پشته قرار میدهیم و هنگام عقبگرد رأس را از پشته حذف میکنیم. بنابراین در تمام طول الگوریتم اولین عنصر پشته رأس در حال بررسی است. جزئیات پیادهسازی در ادامه خواهد آمد.
وقتی در گرافهای بزرگی جستجو میکنیم که امکان ذخیرهٔ کامل آنها به علت محدودیت حافظه وجود ندارد، در صورتی که طول مسیر پیمایش شده توسط الگوریتم که از ریشه شروع شده، خیلی بزرگ شود، الگوریتم با مشکل مواجه خواهد شد. در واقع این راهحل ساده که "رئوسی را که تا به حال دیدهایم ذخیره کنیم" همیشه کار نمیکند. چراکه ممکن است حافظهٔ کافی برای این کار نداشته باشیم. البته این مشکل با محدود کردن عمق جستجو در هر بار اجرای الگوریتم حل میشود که در نهایت به الگوریتم تعمیق تکراری (Iterative Deepening) خواهد انجامید.
الگوریتم
پیمایش با انتخاب رأس r به عنوان ریشه آغاز میشود. r به عنوان یک رأس دیده شده برچسب میخورد. رأس دلخواه r_1 از همسایگان r انتخاب شده و الگوریتم به صورت بازگشتی از r_1 به عنوان ریشه ادامه مییابد.از این پس در هر مرحله وقتی در رأسی مانند v قرار گرفتیم که همهٔ همسایگانش دیده شدهاند، اجرای الگوریتم را برای آن رأس خاتمه میدهیم. حال اگر بعد از اجرای الگوریتم با ریشهٔ r_1 همهٔ همسایگان r برچسب خورده باشند، الگوریتم پایان مییابد. در غیر این صورت رأس دلخواه r_2 از همسایگان r را که هنوز برچسب نخورده انتخاب میکنیم و جستجو را به صورت بازگشتی از r_2 به عنوان ریشه ادامه میدهیم. این روند تامادامیکه همهٔ همسایگان r برچسب نخوردهاند ادامه مییابد.
البته پیمایش گراف برای تأمین هدفی صورت میگیرد. بر این اساس برای انعطاف پذیر ساختن الگوریتم در قبال کاربردهای مختلف، دو نوع عملیات preWORK و postWORK را به همراهِ بازدید از هر رأس یا یال انجام میدهیم، که preWORK در زمان برچسب خوردنِ رأسِ در حال بازدید، و postWORK بعد از بررسی هر یالِ خروجی از رأسِ در حال بازدید انجام خواهد شد. هر دوی این عملیات وابسته به هدفِ استفاده از الگوریتم، مشخص خواهند شد.
الگوریتم بازگشتی جستجوی اول عمق به صورت زير است. آرايه يک بعدی Visited تعيين می کند آيا راسی قبلاً ملاقات شده است يا خير
الگوریتم جستجوی اول سطح
در نظریهٔ گراف، جستجوی اول سطح (به انگلیسی: Breadth-first Search، بهاختصار: BFS) یکی از الگوریتمهای پیمایش گراف است.
استراتژی جستجوی سطح اول برای پیمایش گراف، همانطور که از نامش پیداست «جستجوی سطح به سطح گراف» است.
چگونه کار میکند؟
الگوریتم از ریشه شروع میکند (در گرافها و یا درختهای بدون ریشه رأس دلخواهی به عنوان ریشه انتخاب میشود) و آن را در سطح یک قرار میدهد. سپس در هر مرحله همهٔ همسایههای رئوس آخرین سطح دیده شده را که تا به حال دیده نشدهاند بازدید میکند و آنها را در سطح بعدی میگذارد. این فرایند زمانی متوقف میشود که همهٔ همسایههای رئوس آخرین سطح قبلاً دیده شده باشند. همچنین در مسائلی که حالات مختلف متناظر با رئوس یک گرافاند و حل مسئله مستلزم یافتن رأس هدف با خصوصیات مشخصی است که در عین حال در بین همهٔ رئوس هدف با آن خصوصیات به ریشه نزدیکترین باشد، جستجوی سطح اول به صورت غیرخلاق عمل میکند. بدین ترتیب که الگوریتم هر دفعه همهٔ همسایههای یک رأس را بازدید کرده و سپس به سراغ رأس بعدی میرود و بنابراین گراف سطح به سطح پیمایش خواهد شد. این روند تا جایی ادامه مییابد که رأس هدف پیدا شود و یا احتمالاً همهٔ گراف پیمایش شود. براساس آنچه گفته شد پیادهسازی هوشمندانهٔ الگوریتم آنقدر مؤثر نخواهد بود.
از نقطه نظر عملی، برای پیادهسازی این الگوریتم از صف استفاده میشود. بدین ترتیب که در ابتدا ریشه در صف قرار میگیرد. سپس هر دفعه عنصر ابتدای صف بیرون کشیده شده، همسایگانش بررسی شده و هر همسایهای که تا به حال دیده نشده باشد به انتهای صف اضافه میشود. جزئیات پیادهسازی در ادامه خواهد آمد.
الگوریتم
پیادهسازی این الگوریتم مشابه پیادهسازی جستجوی عمق اول است با این تفاوت که به جای پشته از صف استفاده میشود. در این جا نیز مانند جستجوی عمق اول، preWORK را برای انعطاف بیشتر الگوریتم در نظر میگیریم که در زمان بررسی کردن هر رأس خارج شده از صف انجام میشود.
الگوريتم جستجوی اول سطح به صورت زير است. آرايه Visited برای تعيين رئوس ملاقات شده بکار می رود. از يک صف برای نگهداشتن رئوس مجاور استفاده می شود. هر بار که راسی ملاقات می شود کليه رئوس مجاور آن در صف اضافه می شود. پيمايش از راسی که از صف برداشته می شود ادامه پيدا می کند.
مرتبسازی دایرهای
مرتب سازی دایرهای (به انگلیسی: Cycle sort) یا مرتبسازی درجا یا الگریتم مرتبسازی ناپایدار، یک مرتب سازی مقایسهای که تئوری خوبی از نظر تعداد عناصر نوشتهشده در آرایهٔ اصلی است، بر خلاف تمام الگوریتمهای مرتبسازی. این بر اساس ایدهای است که جایگشت میتواندفاکتوری برای مرتب سازی باشد، که به صورت جداگانه چرخش برای بدست آمدن نتیجه ایجاد شود.
بر خلاف تمام الگوریتمهای نزدیک به آن، دادهها در جای دیگر آرایه به سادگی نوشته نمیشوندتا آنها را از عملیات خارج کنیم. هر مقداردهی در زمان صفر صورت میگیرد اگر درآن زمان در مکان درست خودش موجود باشد، ویا در جای درس در یک زمان نوشته میشود. این مسابقه نیازمند دوباره کاری کمتری برای مرتبسازی درجا است. کم کردن تعداد نوشتنها زمانی که تعداد زیادی از دادهها را قرار است که ذخیره کنیم بسیار سودمند است، مانند EEPROMها یا Flash memory که نوشتن عمر مفید دستگاه را کاهش میدهد. الگوریتم: الگوریتم زیر پیدا میکند با چرخش و دوراندن آن و نتیجهٔ مرتب شده را به ما میدهد. توجه داشتهباشید که range(a, b) از مقدار a تا b – 1 است.
جستجوی ابتدا بهترین
جستجوی بهترین ابتدا (best-first search) یک الگوریتم جستجو است که یک گراف را با بسط دادن محتملترین نود که بنابر قوانین خاص انتخاب میشوند پیمایش میکند.
این نوع جستجو را به عنوان تخمین احتمال انتخاب نود N به وسیلهٔ heuristic evaluation function که به صورت کلی، ممکن است بر پایه توصیف N، توصیف هدف، اطلاعات جمع اوری شده به وسیلهٔ جستجو تا ان نقطه و هر گونه اطلاعات اضافی در زمینهٔ مساله توصیف میکند.
بعصی از نویسندگان از جستجوی اولویت بهترینها استفاده میکنند تا به طور خاص به یک جستجو با یک اشاره کنند که تلاش میکند تا پیشبینی کند که چقدر پایان یک مسیر به راه حل نزدیکتر است، بنابر این ان مسیرهایی که نزدیکتر به جواب هستند اول بسط داده شوند. الگوریتم جستجوی یک نمونه از الگوریتم بهترینها-اول است. الگوریتم بهترینها-اول معمولاً برای پیدا کردن پیدا کردن مسیر در جستجوهای ترکیبی استفاده میشود.
10:15 pm
طراح
طراح به کسی میگویند که طراحی میکند.بخشهای اصلی طراحی شامل نقاشی، مجسمه سازی و معماری است که هنرهای بزرگی هستند.
عامل اصلی طراحی حالات روحی روانی فرد است و یکی از عوامل مهم در پدید آمدن آن خط است . خط و حرکت دو پدیده ای هستند که همیشه با هم ایجاد می شوند و به هم مربوطند.هر گونه جلوه ی بصری که با خط ایجاد می شود به حالات روانی و فیزیکی طراح مربوط می شود .

حالات هیجانی طراح ،شادی و نشاط ، غم و تاثر،آرامش و ضعف و حتی دعا و نیایش .پس می توان نتیجه گرفت که خط وسیله ی ثبت و ضبط هیجانات درونی طراح و عکس العمل های او نسبت به جهان خارج است . مطلب دیگر اینکه دستگاه بینایی همه ی افراد مشابه است اما، ما طرحهای متنوعی از هنرمندان را مشاهده می کنیم که این امر ناشی از حالات روانی و سیستم عصبی هر فرد می باشد که دنیا را به نحوی خاص خود می بیند.
طراحی
طراحی به دانش ایجاد یک طرح یا نمایه از هر تصویر ذهنی یا واقعی گفته میشود.
در هنرهای تجسمی، طراحی یا بهصورت یک اثر مستقل و یا بهعنوان پیش طرحی برای اثر اصلی انجام میشود که در این صورت طرح
مقدماتینیز خوانده میشود. طراحی به دو حوزهٔ کلی تقسیم میشود. یکی حوزهٔ drawing (رسم) است که شامل برداشتهای شخصی یا تجربههای آزاد طراح از موضوعات گوناگون با بیان مستقل و به روش های متنوع میباشد و دیگری حوزهٔ design (طراحی) است که شامل مراحل ترکیب عناصر بصری و فضا بر پایهٔ اصول طرح است و جنبهٔ کاربردی دارد، مانند رشتههای طراحی صنعتی، طراحی معماری و طراحی لباس.نقشی که فقط با خط رسم شود و سایهروشن یا لکههای رنگی نداشته باشد طرح خطینامیده میشود. مهمترین موضوع در طرحهای خطی، خطوط پیرامونی اشیاء است.طراحی فنی و مهندسی با خطکش، پرگار، گونیا و ابزارهایی مانند آنها انجام میشود.
الگوی طراحی
الگوی طراحی مستنداتی هستند که از راهحلهای موفق برای رده خاصی از مشکلات بوجود آمده و از آنها در حل مسائل آتی استفاده میشود. در ابتدا یک مهندس معمار به نام کریستوفر الکساندر از الگوهای طراحی در زمینه کاری خود استفاده نمود، بعدها این ایده در زمینههای کاری دیگر نیز گسترش یافته و مخصوصا در برنامهنویسی بسیار پررنگ گردید.
الگوی طراحی در مهندسی نرمافزار
انواع الگوهای طراحی
در ابتدا چندین الگوی طراحی زیربنایی در زمینه مهندسی کامپیوتر مطرح گشت که تعداد آنها حدود ۲۰ عدد بود. ولی اکنون الگوهای طراحی به بیش از ۱۰۰ عدد رسیده به طوری که دیگر نمیتوان تمامی آنها را در یکجا نام برد.
تعدادی از معروفترین الگوهای طراحی را در زیر نام میبریم:
الگوی طراحی آداپتور
الگوی طراحی دستور
الگوی طراحی پل
الگوی طراحی دکوراتور
الگوی طراحی کارخانه
الگوی طراحی وارونگی کنترل
هسته تفکری
با وجود اینکه تعداد الگوهای طراحی در طول زمان افزایش یافته و همچنان افزایش مییابد، تفکر اصلیای که برروی تمامی آنها سایه افکنده و مانند موتور محرکه برای الگوهای طراحیست دو قانون کلی مهندسی نرمافزار است:
پیادهسازی را از واسط برنامه(interface) جدا کنید.
هیچگاه پیادهسازی را استفاده نکرده بلکه تنها از واسطهای برنامه استفاده کنید. همچنین عدهای بر این نظرند که الگوهای طراحی به دلیل مشکلاتی که نوع تفکر در یک زبان برنامهنویسی دارد بوجود آمدهاند و اگر به طرز تفکری ایدهآل در زمینه زبانهای نرمافزاری برسیم دیگر نیازی نیست تا راهکارهایی غیرمعمول برای مشکلات استفاده کنیم.در هر حال تا رسیدن به آن نقطه آرمانی میتوان از الگوهای طراحی برای حل مشکلات خاص استفاده نمود.
طراحی رایانهای
طراحی رایانهاییا کَد، به انگلیسی (Computer Aided Design) به استفاده از فناوری رایانه در فرایند طراحی و مستندسازی طراحی گفته میشود.
امروزه بسیاری از مراحل طراحی قطعات و اجزاء مختلف توسط رایانه انجام میشود. بسیاری از قطعات تحت شرایط مختلف باید آزمایش شوند و اگر بخواهیم تحت آزمایش واقعی قرار دهیم مستلزم هزینههای بسیار زیاد میشود. با نرمافزارهای بسیار متنوع میتوان این شبیه سازی را انجام داد.
نرمافزارهای طراحی رایانهای، به نرمافزارهایی اطلاق میشود که کار ایجاد و ویرایش اشکال را به کمک رایانه انجام میدهند. امروزه بیشتر نرمافزارهای طراحی به کمک رایانه، نه تنها توانایی ایجاد و ویرایش نقشهٔ دوبعدی و سهبعدی قطعات را دارند، بلکه توانایی وارسی (تحلیل) قطعات از نظر مسائل تنش، گرما و مسائل مکانیکی با استفاده از روش المان محدود را دارند
.تمام رشتههای مهندسی برای طراحی از نرمافزارهای مناسب خود استفاده میکنند. نرمافزارهای مورد استفاده در طراحی معماری و طراحی صنعتی اغلب نرمافزارهای گرافیکی هستند. از نرمافزارهای سه بعدی که بیشتر در طراحی معماری و طراحی صنعتی استفاده میشوند میتوان به اتوکد، سالیدورکس، اینونتور، سالید اج و مکانیکال دسکتاپ اشاره کرد. علاوه بر این موارد، نرمافزارهای گرافیکی دو بعدی مانند فتوشاپ، کورلدراو و فریهند نیز بسیار پر کاربرد هستند. کتیا ، یونیگرافیکس و پرو/اینجینیر هم از بهترین نرمافزارهای گرافیکی مورد استفادهاست که با امکان محاسبات پیچیده مهندسی از قبیل محاسبات تنشهای محوری وهزاران قابلیت حرفهای دیگر به طراحان کمک کردهاند.
طراحی هوشمند
طراحی هوشمند (به انگلیسی: Intelligent design) یا آفرینش هوشمند، ایدهای است که هواداران آن معتقدند، بهترین توضیح برای جهان و موجودات زنده با فرض وجود علتی هوشمند محقق میشود، و جهان آنچنان ساده نیست که توسط طبیعت ساخته شود.
طرفداران این مدل می گویند میبایست وجودی هوشمند بر این جهان احاطه داشته باشد. آفرینش هوشمند بیانگر آن است که جهان تنها با تکامل شکل نگرفته است.
این مدل -که قرائت جدیدی از برهان نظم است- توسط گروهی از متفکران دارای صبغهٔ دانشگاهی پیش کشیده شده است. این متفکران عقیده دارند که شواهد تجربی علم زیستشناسی و نیز برهانهای ریاضی موید ادعاهای آنهاست. آنها بر خلاف طرفداران سنتی آفرینش به وقوع تغییرات بسیار جزیی در موجودات در طول زمانهای طولانی معتقدند و نیز به عمر طولانی حیات در کرهٔ زمین (و نه ۶۰۰۰ سال که در کتاب مقدس آمده) اذعان دارند.
اما آنچه که سبب شهرت سریع و گستردهٔ این نظریه شد، جنجال رسانهای موافقان و مخالفان گنجاندن این نظریه در برنامهٔ درس علوم مدارس امریکا و سپس کشیده شدن این مسئله به دادگاه در سال ۲۰۰۵ بود.
نظریهپردازان
ویلیام دمبسکی و جان جونز از نظریه پردازان مشهور حوزهٔ آفرینش هوشمند هستند.از اصلیترین کتبی که اخیراً در این خصوص نگاشته شده، می توان به امضا در سلول:DNA و شواهدی بر طراحی هوشمند، تالیف استفان مایر اشاره نمود.
استدلال ها
پیچیدگیهای مشخص شده
این مفهوم که برای اولین بار توسط ویلیام دمبسکی ارایه شد، بر وجود دو خصیصه همزمان در دستگاههای کاینات تاکید میکند که به زعم مبدع آن- دمبسکی- نشانگر آفرینش جهان توسط طراح هوشمندی است. دمبسکی این دو خصیصه را اولاً وجود پیچیدگی و ثانیاً کاملاً مشخص بودن آن بر میشمرد.
او پیچیدگی را امری میداند که احتمال وقوع آن به خودی خود بسیار کم است و مشخص بودن آنرا در آن میداند که شما بتوانید آن امر را با توصیفاتی بسیار کوتاه، بطوری که برای همگان قابل فهم باشد مشخص کنید. به عنوان مثالهایی که هر دو این خصیصه را در خود دارند میتوان به دنباله طولانیای از اعداد اول اشاره کرد که طولانی بودن آن نشانه پیچیدگی و اول بودن آن نشانه مشخص بودنش است، یا یک غزل از شکسپیر که از کنار هم قرار گرفتن بسیاری حروف الفبا تشکیل شده است که طولانی بودنش دلیلی بر پیچیدگیاش و با معنی بودنش نشانهای از مشخص بودنش است.
دمبسکی میگوید که اگر شما یک گیرنده رادیویی برای دریافت امواج فضایی داشته باشید و روزی مثلاً امواجی به شکل دنباله اعداد اول را از فضا دریافت کنید مطمئناً ارسال کننده آنرا یک موجود هوشمند خواهید شمرد.
ثوابت فیزیکی تنظیم شده
نظریهپردازان آفرینش هوشمند استدلال میکنند که ثوابت فیزیکی جهان هستی به شکلی کاملاً دقیق تنظیم شدهاند. به نحوی که اگر در مقادیرشان، کوچکترین تغییری وجود میداشت، حیات به شکل کنونیاش ابداً قابل شکلگیری نمیبود.
از جمله این ثوابت میشود ثابت کیهانشناختی، ثابت گرانش، ثابت ساختار ریز، سرعت نور، ثابت پلانک و برخی دیگر را نام برد .
پیچیدگیهای غیر قابل فروکاست و اجزای مرتبط
بعضی دستگاههای دارای اجزای متعدد، دارای این ویژگی هستند که فقط و فقط در صورت وجود تک تک اجزایشان قادر به کار کردن هستند، به شکلی که شما نمیتوانید یکی از اجزای آنها را از آنها جدا کرده و دستگاه کماکان قادر به کار کردن باشد. بعنوان مثال میتوانید یک موتور خودرو را در نظر بگیرید که برای حرکت نیازمند تمامی اجزای خود است.
پیچیدگیهای موجود در این دستگاهها را اصطلاحاً پیچیدگیهای کاهشناپذیر مینامند. طرفداران نظریه آفرینش هوشمند معتقدند که دستگاههای دارای پیچیدگیهای کاهشناپذیر، نمیتوانند از تکامل تدریجی و انتخاب طبیعی به وجود آمده باشند چرا که هر تغییر جزیی در آنها به قیمت از کار افتادنشان تمام میشود.
ریچارد داوکینز در پاسخ مینویسد:
«این پرسشها که «نصف یک چشم به چه کار میآید؟» و یا «نصف یک بال به چه کار میآید؟» نمونههایی از برهان «پیچیدگی فرونکاستنی» هستند. یک واحد کارکردی را هنگامی دارای پیچیدگی فرونکاستنی میدانیم که برداشتن یکی از اجزای آن واحد، موجب اختلال کلی در کارکرد آن شود. این برهان فرض میگیرد که چشم و بال پیچیدگی فرونکاستنی دارند. اما همین که یک لحظه بیندیشیم، بی درنگ مغالطه را درمی یابیم. اگر عدسی چشم یک بیمار مبتلا به آب مروارید را با جراحی برداریم، او دیگر بدون عینک نمیتواند تصاویر را به وضوح ببیند، اما آن قدر بینایی دارد که با درخت برخورد نکند و یا از صخره فرونیفتد. درست است که داشتن نصف بال، به خوبی داشتن یک بال کامل نیست، اما مسلماً از بال نداشتن بهتر است. موقع سقوط از درختی به ارتفاع معین، بال نصفه میتواند شدت ضربهٔ برخوردتان به زمین را تخفیف، و جان تان را نجات دهد. و اگر ۵۱ درصد از یک بال را داشته باشید، میتوانید از درختی اندکی بلند تر بیافتید و باز زنده بمانید. هر کسری از بال را که داشته باشید، ارتفاعی هست که با داشتن آن بال، جان تان نجات مییابد، در حالی که اگر بال تان اندکی کوچک تر بود از آن ارتفاع معین جان بدر نمیبردید. این آزمایش فکری دربارهٔ سقوط از درختهایی با ارتفاعهای معین، یک شیوهٔ درک این مطلب است که، به لحاظ نظری، منحنی مزیت بال باید شیب ملایمی داشته باشد که از ۱ تا ۱۰۰ درصد امتداد مییابد. جنگلها پر از جانوران هواسُر یا چَترباز هستند. این جانوران عملاً مراحل مختلف این شیب صعودی بال به قلهٔ محال را نشان میدهند.
اگر بخواهیم برای کاربرد چشم هم مثالی مشابه کاربرد بالهای ناقص هنگام افتادن از درختان با ارتفاعات مختلف بزنیم، به راحتی میتوانیم موقعیتهایی را تصور کنیم که در آنها نصف یک چشم، جان جانور را نجات میدهد، در حالی که ۴۹ درصد آن چشم چنین نمیکند. این شیبهای ملایم تکاملی چشم را میتوان در تغییرات شرایط نوری، و تغییرات فاصلهٔ تشخیص شکارچی – یا شکار– یافت. و درست مانند وضعیت بالها و سطوح پروازی، حالتهای میانی چشم هم نه تنها قابل تصور اند، بلکه در سراسر دنیای وحش فراوان اند. کِرم پَهن، چشمی دارد که با هر معیار معقولی، محقرتر از نصف چشم انسان است. حلزون دریایی ناوتیلوس چشمی دارد که در میانهٔ راه چشم کرم پَهن و چشم انسان است. برخلاف چشم کرِم پَهن که فقط نور و سایه را تشخیص میدهد، اما تصاویر را نمیتواند ببیند، چشم ناوتیلوس شبیه دوربینی بی عدسی است که میتواند یک تصویر حقیقی بسازد؛ اما تصویر آن در مقایسه با تصویر چشم ما تیره و تار است. هیچ آدم عاقلی نمیتواند انکار کند که چشم داشتن برای این جانور بی مهره و بسیاری جانواردان دیگر، بهتر از چشم نداشتن است و همگی این چشمها در جایی روی این شیب پیوسته و ملایم به سوی قلهٔ محال جای میگیرند. بر روی این شیب، چشم ما نزدیک به یک قلهاست – هرچند نه مرتفع ترین قله، اما یکی از مرتفع ترین قلهها. در کتاب صعود به قلهٔ محال من یک فصل کامل را به چشم و یک فصل را نیز به بال اختصاص دادهام، و نشان دادهام که این دو به چه سادگی توانستهاند آهسته (وحتی شاید نه چندان آهسته) این مراتب صعودی را بپیمایند. در اینجا این موضوع را ختم میکنم .»
انتقاد نسبتبه حوزههایی که هنوز بیپاسخاند
با پیشرفت زیست شناسی، منتقدان توجه خود را به سیستمهای پیچیده سلولی مانند سیستم ایمنی و ساختارهای پیچیده مولکولی مانند موتور تاژک باکتریها معطوف کردند. با اینکه شیوهٔ فرگشت پیچیدهترین سیستمهای زیستی شناخته شده یا در دست تحقیق است.در مقابل مدافعان فرگشت، این انتقاد را نوعی مغالطه توسل به جهل می دانند.
واکنشها و تاثیرات
انتقادات دانشمندان
بسیاری گفته اند که تا کنون، مبنای علمی چندان مستحکمی برای این مدل ارائه نشده است.دانشمندان از این مدل با عناوینی همچون junk science و semi science یاد می کنند؛ زیرا مبنای علمی ندارد.
دادگاه
در سپتامبر سال ۲۰۰۵، والدین ۱۱ دانشآموز مدرسهای در منطقه داور در ایالت پنسیلوانیا از مسوولان مدرسهٔ منطقهای داور بسبب گنجاندن نظریه آفرینش هوشمند در برنامه درسی دانشآموزان و تدریس آن به عنوان نظریهای علمی در کنار نظریه تکامل شکایت کردند.
قاضی دادگاه فدرال، جان جونز، در نهایت مسوولان مدرسه داور را به علت تخلف از متمم اول قانون اساسی امریکا مجرم شناخت. دادگاه همچنین حکم به خارج کردن تدریس این نظریه از برنامه درس علوم دانشآموزان مدرسه داد.
طراحی وب
طراحی وب به مهارت ساخت و راهاندازی صفحات وب گفته میشود.
تیم برنرز لی، مخترع وب، با برپایی یک سایت وب در اوت ۱۹۹۱، نام خود را به عنوان نخستین سازندهٔ وب در تاریخ نگاشت. او در نخستین وبسایتش، از اَبَرمتن و پیوندی برای ایمیل (پست الکترونیک) استفاده کرده بود.
در آغاز، سایتهای وب با کُدهای ساده «اچتیامال» نوشته میشدند، گونهای از زبان کُدنویسی که ساختار سادهای به وبگاهها میداد، شامل سرتیتر و پاراگراف، و توانایی پیوند دادن به صفحههای وب دیگر، با اَبَرمتن. در مقایسه با روشهای دیگر، این راه تازه و متفاوتی بود که کاربران به سادگی میتوانستند با یک مرورگر، صفحههای پیوند خورده را باز کنند.
با پیشرفت وب و هنر طراحی آن، زبان کُد نویسی اش، اَبَرمتن یا اچتیامال، پیچیدهتر و پرانعطافتر شد. ابزاری مانند جدولها که بیشتر برای نمایش نمودارهای دادهای بودند، بزودی مورد استفاده نادرست، برای چیدمانهای پنهان در صفحههای وب قرار گرفتند. با پیدایش الگوهای آبشاری وب یا «CSS»، روش نادرست طراحی با جدولهای پنهان در صفحه از گردونه خارج، و بجای آن استفاده مناسب از زبان کمکی «CSS» جایگزین شد.
فناوریهای یکپارچه سازی دادهگاهها (Database)، مانند زبانهای کُدنویسی سمت سرور (Server-Side Scripting) مانند CGI، PHP، ASP.NET، ASP، JSP و ColdFusion، و استانداردهای طراحی مدرن با الگوها (CSS)، ساختار سایتهای وب را باز هم تغییر داده و آنرا پیشرفته تر کرده اند.
همچنین با آمدن نگارههای جاندار و فناوریهای پویانمایی به صفحه ها، مانند فلَش (Flash)، چهره وب بیشتر از پیش تغییر کرد و توانمندیهای تازه به سازندگان رسانه و طراحهای وب داده شد، و تواناییهای بیشتر و کاراییها تازه مرورگرها برای اچتیامال
طراح به کسی میگویند که طراحی میکند.بخشهای اصلی طراحی شامل نقاشی، مجسمه سازی و معماری است که هنرهای بزرگی هستند.
عامل اصلی طراحی حالات روحی روانی فرد است و یکی از عوامل مهم در پدید آمدن آن خط است . خط و حرکت دو پدیده ای هستند که همیشه با هم ایجاد می شوند و به هم مربوطند.هر گونه جلوه ی بصری که با خط ایجاد می شود به حالات روانی و فیزیکی طراح مربوط می شود .

حالات هیجانی طراح ،شادی و نشاط ، غم و تاثر،آرامش و ضعف و حتی دعا و نیایش .پس می توان نتیجه گرفت که خط وسیله ی ثبت و ضبط هیجانات درونی طراح و عکس العمل های او نسبت به جهان خارج است . مطلب دیگر اینکه دستگاه بینایی همه ی افراد مشابه است اما، ما طرحهای متنوعی از هنرمندان را مشاهده می کنیم که این امر ناشی از حالات روانی و سیستم عصبی هر فرد می باشد که دنیا را به نحوی خاص خود می بیند.
طراحی
طراحی به دانش ایجاد یک طرح یا نمایه از هر تصویر ذهنی یا واقعی گفته میشود.
در هنرهای تجسمی، طراحی یا بهصورت یک اثر مستقل و یا بهعنوان پیش طرحی برای اثر اصلی انجام میشود که در این صورت طرح
مقدماتینیز خوانده میشود. طراحی به دو حوزهٔ کلی تقسیم میشود. یکی حوزهٔ drawing (رسم) است که شامل برداشتهای شخصی یا تجربههای آزاد طراح از موضوعات گوناگون با بیان مستقل و به روش های متنوع میباشد و دیگری حوزهٔ design (طراحی) است که شامل مراحل ترکیب عناصر بصری و فضا بر پایهٔ اصول طرح است و جنبهٔ کاربردی دارد، مانند رشتههای طراحی صنعتی، طراحی معماری و طراحی لباس.نقشی که فقط با خط رسم شود و سایهروشن یا لکههای رنگی نداشته باشد طرح خطینامیده میشود. مهمترین موضوع در طرحهای خطی، خطوط پیرامونی اشیاء است.طراحی فنی و مهندسی با خطکش، پرگار، گونیا و ابزارهایی مانند آنها انجام میشود.
الگوی طراحی
الگوی طراحی مستنداتی هستند که از راهحلهای موفق برای رده خاصی از مشکلات بوجود آمده و از آنها در حل مسائل آتی استفاده میشود. در ابتدا یک مهندس معمار به نام کریستوفر الکساندر از الگوهای طراحی در زمینه کاری خود استفاده نمود، بعدها این ایده در زمینههای کاری دیگر نیز گسترش یافته و مخصوصا در برنامهنویسی بسیار پررنگ گردید.
الگوی طراحی در مهندسی نرمافزار
انواع الگوهای طراحی
در ابتدا چندین الگوی طراحی زیربنایی در زمینه مهندسی کامپیوتر مطرح گشت که تعداد آنها حدود ۲۰ عدد بود. ولی اکنون الگوهای طراحی به بیش از ۱۰۰ عدد رسیده به طوری که دیگر نمیتوان تمامی آنها را در یکجا نام برد.
تعدادی از معروفترین الگوهای طراحی را در زیر نام میبریم:
الگوی طراحی آداپتور
الگوی طراحی دستور
الگوی طراحی پل
الگوی طراحی دکوراتور
الگوی طراحی کارخانه
الگوی طراحی وارونگی کنترل
هسته تفکری
با وجود اینکه تعداد الگوهای طراحی در طول زمان افزایش یافته و همچنان افزایش مییابد، تفکر اصلیای که برروی تمامی آنها سایه افکنده و مانند موتور محرکه برای الگوهای طراحیست دو قانون کلی مهندسی نرمافزار است:
پیادهسازی را از واسط برنامه(interface) جدا کنید.
هیچگاه پیادهسازی را استفاده نکرده بلکه تنها از واسطهای برنامه استفاده کنید. همچنین عدهای بر این نظرند که الگوهای طراحی به دلیل مشکلاتی که نوع تفکر در یک زبان برنامهنویسی دارد بوجود آمدهاند و اگر به طرز تفکری ایدهآل در زمینه زبانهای نرمافزاری برسیم دیگر نیازی نیست تا راهکارهایی غیرمعمول برای مشکلات استفاده کنیم.در هر حال تا رسیدن به آن نقطه آرمانی میتوان از الگوهای طراحی برای حل مشکلات خاص استفاده نمود.
طراحی رایانهای
طراحی رایانهاییا کَد، به انگلیسی (Computer Aided Design) به استفاده از فناوری رایانه در فرایند طراحی و مستندسازی طراحی گفته میشود.
امروزه بسیاری از مراحل طراحی قطعات و اجزاء مختلف توسط رایانه انجام میشود. بسیاری از قطعات تحت شرایط مختلف باید آزمایش شوند و اگر بخواهیم تحت آزمایش واقعی قرار دهیم مستلزم هزینههای بسیار زیاد میشود. با نرمافزارهای بسیار متنوع میتوان این شبیه سازی را انجام داد.
نرمافزارهای طراحی رایانهای، به نرمافزارهایی اطلاق میشود که کار ایجاد و ویرایش اشکال را به کمک رایانه انجام میدهند. امروزه بیشتر نرمافزارهای طراحی به کمک رایانه، نه تنها توانایی ایجاد و ویرایش نقشهٔ دوبعدی و سهبعدی قطعات را دارند، بلکه توانایی وارسی (تحلیل) قطعات از نظر مسائل تنش، گرما و مسائل مکانیکی با استفاده از روش المان محدود را دارند
.تمام رشتههای مهندسی برای طراحی از نرمافزارهای مناسب خود استفاده میکنند. نرمافزارهای مورد استفاده در طراحی معماری و طراحی صنعتی اغلب نرمافزارهای گرافیکی هستند. از نرمافزارهای سه بعدی که بیشتر در طراحی معماری و طراحی صنعتی استفاده میشوند میتوان به اتوکد، سالیدورکس، اینونتور، سالید اج و مکانیکال دسکتاپ اشاره کرد. علاوه بر این موارد، نرمافزارهای گرافیکی دو بعدی مانند فتوشاپ، کورلدراو و فریهند نیز بسیار پر کاربرد هستند. کتیا ، یونیگرافیکس و پرو/اینجینیر هم از بهترین نرمافزارهای گرافیکی مورد استفادهاست که با امکان محاسبات پیچیده مهندسی از قبیل محاسبات تنشهای محوری وهزاران قابلیت حرفهای دیگر به طراحان کمک کردهاند.
طراحی هوشمند
طراحی هوشمند (به انگلیسی: Intelligent design) یا آفرینش هوشمند، ایدهای است که هواداران آن معتقدند، بهترین توضیح برای جهان و موجودات زنده با فرض وجود علتی هوشمند محقق میشود، و جهان آنچنان ساده نیست که توسط طبیعت ساخته شود.
طرفداران این مدل می گویند میبایست وجودی هوشمند بر این جهان احاطه داشته باشد. آفرینش هوشمند بیانگر آن است که جهان تنها با تکامل شکل نگرفته است.
این مدل -که قرائت جدیدی از برهان نظم است- توسط گروهی از متفکران دارای صبغهٔ دانشگاهی پیش کشیده شده است. این متفکران عقیده دارند که شواهد تجربی علم زیستشناسی و نیز برهانهای ریاضی موید ادعاهای آنهاست. آنها بر خلاف طرفداران سنتی آفرینش به وقوع تغییرات بسیار جزیی در موجودات در طول زمانهای طولانی معتقدند و نیز به عمر طولانی حیات در کرهٔ زمین (و نه ۶۰۰۰ سال که در کتاب مقدس آمده) اذعان دارند.
اما آنچه که سبب شهرت سریع و گستردهٔ این نظریه شد، جنجال رسانهای موافقان و مخالفان گنجاندن این نظریه در برنامهٔ درس علوم مدارس امریکا و سپس کشیده شدن این مسئله به دادگاه در سال ۲۰۰۵ بود.
نظریهپردازان
ویلیام دمبسکی و جان جونز از نظریه پردازان مشهور حوزهٔ آفرینش هوشمند هستند.از اصلیترین کتبی که اخیراً در این خصوص نگاشته شده، می توان به امضا در سلول:DNA و شواهدی بر طراحی هوشمند، تالیف استفان مایر اشاره نمود.
استدلال ها
پیچیدگیهای مشخص شده
این مفهوم که برای اولین بار توسط ویلیام دمبسکی ارایه شد، بر وجود دو خصیصه همزمان در دستگاههای کاینات تاکید میکند که به زعم مبدع آن- دمبسکی- نشانگر آفرینش جهان توسط طراح هوشمندی است. دمبسکی این دو خصیصه را اولاً وجود پیچیدگی و ثانیاً کاملاً مشخص بودن آن بر میشمرد.
او پیچیدگی را امری میداند که احتمال وقوع آن به خودی خود بسیار کم است و مشخص بودن آنرا در آن میداند که شما بتوانید آن امر را با توصیفاتی بسیار کوتاه، بطوری که برای همگان قابل فهم باشد مشخص کنید. به عنوان مثالهایی که هر دو این خصیصه را در خود دارند میتوان به دنباله طولانیای از اعداد اول اشاره کرد که طولانی بودن آن نشانه پیچیدگی و اول بودن آن نشانه مشخص بودنش است، یا یک غزل از شکسپیر که از کنار هم قرار گرفتن بسیاری حروف الفبا تشکیل شده است که طولانی بودنش دلیلی بر پیچیدگیاش و با معنی بودنش نشانهای از مشخص بودنش است.
دمبسکی میگوید که اگر شما یک گیرنده رادیویی برای دریافت امواج فضایی داشته باشید و روزی مثلاً امواجی به شکل دنباله اعداد اول را از فضا دریافت کنید مطمئناً ارسال کننده آنرا یک موجود هوشمند خواهید شمرد.
ثوابت فیزیکی تنظیم شده
نظریهپردازان آفرینش هوشمند استدلال میکنند که ثوابت فیزیکی جهان هستی به شکلی کاملاً دقیق تنظیم شدهاند. به نحوی که اگر در مقادیرشان، کوچکترین تغییری وجود میداشت، حیات به شکل کنونیاش ابداً قابل شکلگیری نمیبود.
از جمله این ثوابت میشود ثابت کیهانشناختی، ثابت گرانش، ثابت ساختار ریز، سرعت نور، ثابت پلانک و برخی دیگر را نام برد .
پیچیدگیهای غیر قابل فروکاست و اجزای مرتبط
بعضی دستگاههای دارای اجزای متعدد، دارای این ویژگی هستند که فقط و فقط در صورت وجود تک تک اجزایشان قادر به کار کردن هستند، به شکلی که شما نمیتوانید یکی از اجزای آنها را از آنها جدا کرده و دستگاه کماکان قادر به کار کردن باشد. بعنوان مثال میتوانید یک موتور خودرو را در نظر بگیرید که برای حرکت نیازمند تمامی اجزای خود است.
پیچیدگیهای موجود در این دستگاهها را اصطلاحاً پیچیدگیهای کاهشناپذیر مینامند. طرفداران نظریه آفرینش هوشمند معتقدند که دستگاههای دارای پیچیدگیهای کاهشناپذیر، نمیتوانند از تکامل تدریجی و انتخاب طبیعی به وجود آمده باشند چرا که هر تغییر جزیی در آنها به قیمت از کار افتادنشان تمام میشود.
ریچارد داوکینز در پاسخ مینویسد:
«این پرسشها که «نصف یک چشم به چه کار میآید؟» و یا «نصف یک بال به چه کار میآید؟» نمونههایی از برهان «پیچیدگی فرونکاستنی» هستند. یک واحد کارکردی را هنگامی دارای پیچیدگی فرونکاستنی میدانیم که برداشتن یکی از اجزای آن واحد، موجب اختلال کلی در کارکرد آن شود. این برهان فرض میگیرد که چشم و بال پیچیدگی فرونکاستنی دارند. اما همین که یک لحظه بیندیشیم، بی درنگ مغالطه را درمی یابیم. اگر عدسی چشم یک بیمار مبتلا به آب مروارید را با جراحی برداریم، او دیگر بدون عینک نمیتواند تصاویر را به وضوح ببیند، اما آن قدر بینایی دارد که با درخت برخورد نکند و یا از صخره فرونیفتد. درست است که داشتن نصف بال، به خوبی داشتن یک بال کامل نیست، اما مسلماً از بال نداشتن بهتر است. موقع سقوط از درختی به ارتفاع معین، بال نصفه میتواند شدت ضربهٔ برخوردتان به زمین را تخفیف، و جان تان را نجات دهد. و اگر ۵۱ درصد از یک بال را داشته باشید، میتوانید از درختی اندکی بلند تر بیافتید و باز زنده بمانید. هر کسری از بال را که داشته باشید، ارتفاعی هست که با داشتن آن بال، جان تان نجات مییابد، در حالی که اگر بال تان اندکی کوچک تر بود از آن ارتفاع معین جان بدر نمیبردید. این آزمایش فکری دربارهٔ سقوط از درختهایی با ارتفاعهای معین، یک شیوهٔ درک این مطلب است که، به لحاظ نظری، منحنی مزیت بال باید شیب ملایمی داشته باشد که از ۱ تا ۱۰۰ درصد امتداد مییابد. جنگلها پر از جانوران هواسُر یا چَترباز هستند. این جانوران عملاً مراحل مختلف این شیب صعودی بال به قلهٔ محال را نشان میدهند.
اگر بخواهیم برای کاربرد چشم هم مثالی مشابه کاربرد بالهای ناقص هنگام افتادن از درختان با ارتفاعات مختلف بزنیم، به راحتی میتوانیم موقعیتهایی را تصور کنیم که در آنها نصف یک چشم، جان جانور را نجات میدهد، در حالی که ۴۹ درصد آن چشم چنین نمیکند. این شیبهای ملایم تکاملی چشم را میتوان در تغییرات شرایط نوری، و تغییرات فاصلهٔ تشخیص شکارچی – یا شکار– یافت. و درست مانند وضعیت بالها و سطوح پروازی، حالتهای میانی چشم هم نه تنها قابل تصور اند، بلکه در سراسر دنیای وحش فراوان اند. کِرم پَهن، چشمی دارد که با هر معیار معقولی، محقرتر از نصف چشم انسان است. حلزون دریایی ناوتیلوس چشمی دارد که در میانهٔ راه چشم کرم پَهن و چشم انسان است. برخلاف چشم کرِم پَهن که فقط نور و سایه را تشخیص میدهد، اما تصاویر را نمیتواند ببیند، چشم ناوتیلوس شبیه دوربینی بی عدسی است که میتواند یک تصویر حقیقی بسازد؛ اما تصویر آن در مقایسه با تصویر چشم ما تیره و تار است. هیچ آدم عاقلی نمیتواند انکار کند که چشم داشتن برای این جانور بی مهره و بسیاری جانواردان دیگر، بهتر از چشم نداشتن است و همگی این چشمها در جایی روی این شیب پیوسته و ملایم به سوی قلهٔ محال جای میگیرند. بر روی این شیب، چشم ما نزدیک به یک قلهاست – هرچند نه مرتفع ترین قله، اما یکی از مرتفع ترین قلهها. در کتاب صعود به قلهٔ محال من یک فصل کامل را به چشم و یک فصل را نیز به بال اختصاص دادهام، و نشان دادهام که این دو به چه سادگی توانستهاند آهسته (وحتی شاید نه چندان آهسته) این مراتب صعودی را بپیمایند. در اینجا این موضوع را ختم میکنم .»
انتقاد نسبتبه حوزههایی که هنوز بیپاسخاند
با پیشرفت زیست شناسی، منتقدان توجه خود را به سیستمهای پیچیده سلولی مانند سیستم ایمنی و ساختارهای پیچیده مولکولی مانند موتور تاژک باکتریها معطوف کردند. با اینکه شیوهٔ فرگشت پیچیدهترین سیستمهای زیستی شناخته شده یا در دست تحقیق است.در مقابل مدافعان فرگشت، این انتقاد را نوعی مغالطه توسل به جهل می دانند.
واکنشها و تاثیرات
انتقادات دانشمندان
بسیاری گفته اند که تا کنون، مبنای علمی چندان مستحکمی برای این مدل ارائه نشده است.دانشمندان از این مدل با عناوینی همچون junk science و semi science یاد می کنند؛ زیرا مبنای علمی ندارد.
دادگاه
در سپتامبر سال ۲۰۰۵، والدین ۱۱ دانشآموز مدرسهای در منطقه داور در ایالت پنسیلوانیا از مسوولان مدرسهٔ منطقهای داور بسبب گنجاندن نظریه آفرینش هوشمند در برنامه درسی دانشآموزان و تدریس آن به عنوان نظریهای علمی در کنار نظریه تکامل شکایت کردند.
قاضی دادگاه فدرال، جان جونز، در نهایت مسوولان مدرسه داور را به علت تخلف از متمم اول قانون اساسی امریکا مجرم شناخت. دادگاه همچنین حکم به خارج کردن تدریس این نظریه از برنامه درس علوم دانشآموزان مدرسه داد.
طراحی وب
طراحی وب به مهارت ساخت و راهاندازی صفحات وب گفته میشود.
تیم برنرز لی، مخترع وب، با برپایی یک سایت وب در اوت ۱۹۹۱، نام خود را به عنوان نخستین سازندهٔ وب در تاریخ نگاشت. او در نخستین وبسایتش، از اَبَرمتن و پیوندی برای ایمیل (پست الکترونیک) استفاده کرده بود.
در آغاز، سایتهای وب با کُدهای ساده «اچتیامال» نوشته میشدند، گونهای از زبان کُدنویسی که ساختار سادهای به وبگاهها میداد، شامل سرتیتر و پاراگراف، و توانایی پیوند دادن به صفحههای وب دیگر، با اَبَرمتن. در مقایسه با روشهای دیگر، این راه تازه و متفاوتی بود که کاربران به سادگی میتوانستند با یک مرورگر، صفحههای پیوند خورده را باز کنند.
با پیشرفت وب و هنر طراحی آن، زبان کُد نویسی اش، اَبَرمتن یا اچتیامال، پیچیدهتر و پرانعطافتر شد. ابزاری مانند جدولها که بیشتر برای نمایش نمودارهای دادهای بودند، بزودی مورد استفاده نادرست، برای چیدمانهای پنهان در صفحههای وب قرار گرفتند. با پیدایش الگوهای آبشاری وب یا «CSS»، روش نادرست طراحی با جدولهای پنهان در صفحه از گردونه خارج، و بجای آن استفاده مناسب از زبان کمکی «CSS» جایگزین شد.
فناوریهای یکپارچه سازی دادهگاهها (Database)، مانند زبانهای کُدنویسی سمت سرور (Server-Side Scripting) مانند CGI، PHP، ASP.NET، ASP، JSP و ColdFusion، و استانداردهای طراحی مدرن با الگوها (CSS)، ساختار سایتهای وب را باز هم تغییر داده و آنرا پیشرفته تر کرده اند.
همچنین با آمدن نگارههای جاندار و فناوریهای پویانمایی به صفحه ها، مانند فلَش (Flash)، چهره وب بیشتر از پیش تغییر کرد و توانمندیهای تازه به سازندگان رسانه و طراحهای وب داده شد، و تواناییهای بیشتر و کاراییها تازه مرورگرها برای اچتیامال
ساعت : 10:15 pm | نویسنده : admin
|
مطلب بعدی