payamvha/North_RAG huggingface dataset:
یا کوچکترین مقدار بین داده‌ها همواره در ریشه درخت قرار دارد. یافتن بزرگترین یا کوچکترین عنصر بین عناصر، هزینه ثابت (Ө(۱ دارد. با حذف این عنصر از درخت، بزرگترین یا کوچکترین عنصر بعدی مجدداً در ریشه قرار می‌گیرد. به این ترتیب با حذف متوالی عناصر درخت heap و درج آن‌ها در محل جدید، یک آرایه مرتب‌شده نزولی ویا صعودی به دست خواهد آمد. به عنوان مثال، min-heap زیر راتوضیح می‌دهیم: مراحل مرتب‌سازی هرمی به ترتیب زیر خواهد بود: Step 0) min-heap: 1, 4, 5, 8, 6, 9 -list: Step 1) min-heap: 4, 6, 5, 8, 9 -list:1 Step 2)
Step 1) min-heap: 4, 6, 5, 8, 9 -list:1 Step 2) min-heap: 5, 6, 9, 8 -list:1 ,4 Step 3) min-heap: 6, 8, 9 -list:1, 4,5 Step 4) min-heap: 8, 9 -list:1, 4, 5, 6 Step 5) min-heap: 9 - list:1, 4, 5, 6,8 Step 6) min-heap: -list: 1, 4, 5, 6, 8, 9 که در آخر، آرایه list شامل اطلاعات مرتب‌شده صعودی است. بررسی پیچیدگی زمانی مرتب‌سازی هرمی. برای مرتب‌کردن عناصر با استفاده از درخت heap، نیاز به n عمل حذف گره ریشه از درخت دارد. عمل حذف گره ریشه در درخت heap خود از مرتبه (Θ(log n است. در نتیجه کل این عملیات از مرتبه
(Θ(log n است. در نتیجه کل این عملیات از مرتبه (Θ(n log n خواهد بود. نکته قابل توجه دیگر، ساخت درخت heap از عناصر مورد نظر برای مرتب‌سازی است. در حالت عادی عناصر به صورت نامرتب و با چیدمان تصادفی در اختیار هر الگوریتم مرتب‌سازی قرار می‌گیرند. در این حالت یک هزینه زمانی دیگر برای ساخت درخت heap از روی چنین فهرستی مورد نیاز است. بررسی فضای مصرفی مرتب‌سازی هرمی. در روش بحث شده برای مرتب کردن n عنصر، دو آرایه n عنصری نیاز است. یکی از این آرایه‌ها عناصر را به فرم درخت heap به عنوان ورودی الگوریتم، و دیگری عناصر
درخت heap به عنوان ورودی الگوریتم، و دیگری عناصر مرتب شده را به عنوان خروجی الگوریتم شامل می‌شوند. در چنین حالتی این الگوریتم یک روش مرتب‌سازی درجا نیست. با اندکی تغییر در روش پیاده‌سازی الگوریتم می‌توان عملکرد دو آرایه را در یک آرایه ادغام کرده، و میزان حافظه مصرفی را کاهش داد. درخت min-heap مثال فوق را در نظر بگیرید. با حذف عدد یک به عنوان گره ریشه درخت و اعمال تغییرات لازم به نتیجه زیر می‌رسیم: خط عمودی پررنگ، انتهای اطلاعات درخت در آرایه را نشان می‌دهد. خانه شماره ۶ حاوی اطلاعات بلا استفاده‌است. پس
خانه شماره ۶ حاوی اطلاعات بلا استفاده‌است. پس می‌توانیم عنصر حذف شده را در آن قرار دهیم: توجه = در حال حاضر درخت از پنج عنصر تشکیل شده‌است و عنصر ششم آرایه از عناصر درخت نیست. به همین ترتیب با حذف مجدد گره ریشه با مقدار ۴ آرایه زیر حاصل می‌شود: و با درج عنصر حذف شده در محل بلا استفاده: به همین ترتیب با تکرار الگوریتم نتیجه نهایی حاصل می‌شود: باید توجه داشت که بر خلاف نتیجه نهایی روش قبل، در این حالت عناصر به صورت نزولی به دست آمده‌اند. یعنی در این روش از درخت min-heap برای مرتب‌سازی نزولی و از درخت
از درخت min-heap برای مرتب‌سازی نزولی و از درخت max-heap برای مرتب‌سازی صعودی استفاده می‌شود. ساختن یک درخت Max-Heap. می‌توانیم برای تبدیل آرایه[A[1..n به یک max-Heap که [n=length[A از روال MAX-HEAPIFY به روش پایین به بالا استفاده کنیم. از آنجایی که عناصر زیر آرایه [A[(n/2)+1)...n همگی برگ‌های درخت هستند و بنابراین هر کدام یک Heap یک عنصری برای شروع است، روالBUILD-MAX-HEAP در راستای گره‌های باقی‌مانده درخت حرکت کرده و برای هر یک MAX-HEAPIFY را اجرا می‌کند. BUILD-MAX-HEAP(A) 1 heap-size=length[A] 2 for
BUILD-MAX-HEAP(A) 1 heap-size=length[A] 2 for i=length[A]/2 downto 1 3 do MAX-HEAPIFY(A,i) روال MAX-HEAPIFY. MAX-HEAPIFY یک زیرروال مهم برای دستکاری max-Heapها است. ورودی آن آرایهA و اندیس i در آرایه‌است. زمانی که MAX-HEAPIFY فراخوانی می‌شود، فرض می‌شود که درخت‌های دودویی مشتق شده از فرزندان چپ و راستش،max-Heap هستند، ولی عنصر[A[iممکن است کوچکتر از فرزندانش باشد، بنابراین ویژگی max-Heap مورد تخطی قرار می‌گیرد. وظیفه MAX-HEAPIFY این است که مقدار موجود در [A[i را در max-Heap به پایین حرکت دهد تا زیر درخت
[A[i را در max-Heap به پایین حرکت دهد تا زیر درخت مشتق شده ازi، یک max-Heapشود. MAX-HEAPIFY(A,i) 1 l=LEFT(i) 2 r=RIGTH(i) 3 if(l≤heap-size[A] &amp;&amp;A[l[&gt;A[i] 4 then largest=l 5 else largest=i 6 if(r≤heap-size[A] &amp;&amp; A[r]&gt;A[largest] 7 then largest=r 8 if (largest≠i) 9 then swap(A[i],A[largest]) 10 MAX-HEAPIFY(A,largest) شبه کد مرتب‌سازی هرمی. دو نوع Heap دودویی وجود دارد:max-Heapها وmin-Heapها. در هر دو نوع، مقادیر درون گره‌ها ویژگی Heap را ارضاء می‌کنند که ویژگی‌های هرکدام به نوع Heap
را ارضاء می‌کنند که ویژگی‌های هرکدام به نوع Heap بستگی دارند. ویژگیmax-Heap این است که برای هر گره i به جزء ریشه: A[PARENT(i)]&gt;A[i] به‌طوری که: PARENT(i) return i/2 به عبارت دیگر مقدار یک گره حداکثر برابر مقدار پدرش است؛ بنابراین بزرگترین عضو max-Heap در ریشه ذخیره می‌شود. ویژگی min-Heap به صورت بر عکس شکل می‌گیرد. کوچکترین عضو در ریشه قرار می‌گیرد. در این الگوریتم مرتب‌سازی ازmax-Heap استفاده کردیم. HEAPSORT(A) 1 BIULD-MAX-HEAP(A) 2 for(i=length [A] downto 2) 3 do swap(A[1],A[i]) 4
for(i=length [A] downto 2) 3 do swap(A[1],A[i]) 4 Heap-size[A]=Heap-size[A]-1 5 MAX-HEAPIFY(A,1) زمان اجرا. روال HEAPSORT زمان (O(n lgn را صرف می‌کند چون فراخوانی BUILD-HEAPزمان (O(n و هر یک از n-1 فراخوانی MAX-HEAPIFY زمان (O(lgn را صرف می‌کند. بررسی فضای مصرفی مرتب‌سازی هرمی. در روش بحث شده برای مرتب کردن n عنصر، دو آرایه n عنصری نیاز است. یکی از این آرایه‌ها عناصر را به فرم درخت heap به عنوان ورودی الگوریتم، و دیگری عناصر مرتب شده را به عنوان خروجی الگوریتم شامل می‌شوند. در چنین حالتی این الگوریتم یک
شامل می‌شوند. در چنین حالتی این الگوریتم یک روش مرتب‌سازی درجا نیست. با اندکی تغییر در روش پیاده‌سازی الگوریتم می‌توان عملکرد دو آرایه را در یک آرایه ادغام کرده، و میزان حافظه مصرفی را کاهش داد. درخت min-heap مثال فوق را در نظر بگیرید. با حذف عدد یک به عنوان گره ریشه درخت و اعمال تغییرات لازم به نتیجه زیر می‌رسیم: خط عمودی پررنگ، انتهای اطلاعات درخت در آرایه را نشان می‌دهد. خانه شماره ۶ حاوی اطلاعات سوخته و بلا استفاده‌است. پس می‌توانیم عنصر حذف شده را در آن قرار دهیم: توجه داشته باشید که در حال حاضر درخت
قرار دهیم: توجه داشته باشید که در حال حاضر درخت از پنج عنصر تشکیل شده‌است و عنصر ششم آرایه از عناصر درخت نیست. به همین ترتیب با حذف مجدد گره ریشه با مقدار ۴ آرایه زیر حاصل می‌شود: و با درج عنصر حذف شده در محل بلا استفاده: به همین ترتیب با تکرار الگوریتم نتیجه نهایی حاصل می‌شود: روش مرتب‌سازی انتخابی (Selection Sort) یکی از روش‌های اولیه مرتب‌سازی بر اساس مقایسه عناصر است. این الگوریتم طی چند مرحله عناصر فهرست را به صورت صعودی یا نزولی مرتب می‌کند. به این ترتیب که در هر مرحله با بررسی عناصر نامرتب، بزرگترین
که در هر مرحله با بررسی عناصر نامرتب، بزرگترین (یا کوچکترین) عنصر را پیدا کرده، و به انتهای فهرست منتقل می‌کند. فهرست اعداد زیر را در نظر بگیرید، که باید به صورت صعودی (کوچک به بزرگ) مرتب شود: ۲ ۸ ۴ ۱ ۷ در مرحله اول، کل فهرست از ابتدا تا انتها بررسی شده، و بزرگترین عنصر با عنصر انتهای فهرست نامرتب جابجا می‌شود: ۱) ۲ ۸ ۴ ۱ ۷ -&gt; ۲ ۷ ۴ ۱ ۸ در مرحله دوم، پیمایش از ابتدای فهرست تا عنصر چهارم صورت گرفته، و بزرگترین عنصر با عنصر انتهای آن جابجا می‌شود: ۲) ۲ ۷ ۴ ۱ ۸ -&gt; ۲ ۱ ۴ ۷ ۸ علت این که چرا عنصر پنجم
۷ ۴ ۱ ۸ -&gt; ۲ ۱ ۴ ۷ ۸ علت این که چرا عنصر پنجم بررسی نمی‌شود کاملاً مشخص است. این عنصر در مرحله قبل به عنوان بزرگترین عنصر به انتهای فهرست منتقل شده‌است، و به‌طور حتم نیاز به جابجایی ندارد. در مرحله سوم، عناصر اول تا سوم بررسی شده و بزرگترین عنصر به انتهای آن منتقل می‌شود: ۳) ۲ ۱ ۴ ۷ ۸ -&gt; ۲ ۱ ۴ ۷ ۸ و در مرحله آخر دو عنصر باقی‌مانده مقایسه می‌شوند: ۴) ۲ ۱ ۴ ۷ ۸ -&gt; ۱ ۲ ۴ ۷ ۸ و به این ترتیب فهرست مرتب می‌شود.
نوروصوت‌شناسی یا آکوستو-اپتیک (Acousto-optics) شاخه‌ای از فیزیک است که به بررسی برهم کنش امواج نوری و امواج صوتی و به خصوص پراش لیزر به وسیلهٔ امواج صوتی می‌پردازد. اپتیک تاریخچه‌ای بسیار طولانی دارد: از زمان یونانیان باستان تا عصر حاضر درست مانند اپتیک، آکوستیک نیز تاریخچه‌ای طولانی دارد که به زمان یونانیان باستان بازمی‌گردد. در مقابل آکوستواپتیک علمی بسیار نوین با تاریخچه‌ای کوتاه‌است. این زمینه از علم با پیش‌بینی بریلوئن در مورد پراش نور به وسیلهٔ امواج صوتی منتشر شده در ماده در سال ۱۹۲۲ میالادی آغاز شد.
منتشر شده در ماده در سال ۱۹۲۲ میالادی آغاز شد. این پیش‌بینی ده سال بعد توسط دبای و سیرز و همچنین لوکاس و بیکارد آزمایش و تأیید شد. مورد خاص پراش مرتبهٔ اول تحت یک زاویهٔ فرود خاص (که بریلوئن هم پیش‌بینی آن را کرده بود) برای اولین بار توسط ریتوف دیده شد. رامان و نث در سال ۱۹۳۷ یک مدل عمومی تر را طراحی کردند که پراش‌های مرتبهٔ بالاتر را آشکار کند. این مدل بعدها در سال ۱۹۵۶ توسط فریزو توسعه پیدا کرد. مدل وی قابل تنظیم بر مرتبهٔ پراشی مشخص بود. اساس نوروصوت‌شناسی، تغییر ضریب شکست به خاطر حضور موج صوتی در
تغییر ضریب شکست به خاطر حضور موج صوتی در ماده‌است. موج صوتی یک شبکهٔ ضریب شکست در ماده به وجود می‌آورد و این شبکه توسط موج نوری «دیده» می‌شود. تغییر ضریب شکست که به خاطر نوسان فشار ایجاد شده، به وسیله آثار شکست نور، بازتاب نور، تداخل و پراش قابل شناسایی است. آکوستو اپتیک. آکوستو اپتیک شاخه‌ای از فیزیک است که به بررسی برهم کنش امواج نوری و امواج صوتی و به خصوص پراش لیزر به وسیلهٔ امواج صوتی می‌پردازد. "مقدمه" اپتیک تاریخچه‌ای بسیار طولانی دارد: از زمان یونانیان باستان تا عصر حاضر درست مانند اپتیک، آکوستیک
باستان تا عصر حاضر درست مانند اپتیک، آکوستیک نیز تاریخچه‌ای طولانی دارد که به زمان یونانیان باستان بازمی‌گردد. در مقابل آکوستواپتیک علمی بسیار نوین با تاریخچه‌ای کوتاه است. این زمینه از علم با پیش‌بینیبریلوئندر مورد پراش نور به وسیلهٔ امواج صوتی منتشر شده در ماده در سال ۱۹۲۲ میالادی آغاز شد. این پیش‌بینی ده سال بعد توسط دبای و سیرز و همچنین لوکاس و بیکارد آزمایش و تأیید شد. مورد خاص پراش مرتبهٔ اول تحت یک زاویهٔ فرود خاص (که بریلوئن هم پیش‌بینی آن را کرده بود) برای اولین بار توسط ریتوف دیده شد. رامان و نث
برای اولین بار توسط ریتوف دیده شد. رامان و نث در سال ۱۹۳۷ یک مدل عمومی تر را طراحی کردند که پراش‌های مرتبهٔ بالاتر را آشکار کند. این مدل بعدها در سال ۱۹۵۶ توسط فریزو توسعه پیدا کرد. مدل وی قابل تنظیم بر مرتبهٔ پراشی مشخص بود. اساس آکوستو اپتیک، تغییر ضریب شکست به خاطر حضور موج صوتی در ماده است. موج صوتی یک شبکهٔ ضریب شکست در ماده به وجود می‌آورد و این شبکه توسط موج نوری «دیده» می‌شود. تغییر ضریب شکست که به خاطر نوسان فشار ایجاد شده، به وسیله آثار شکست نور، بازتاب نور، تداخل و پراش قابل شناسایی است. "تئوری"
نور، تداخل و پراش قابل شناسایی است. "تئوری" اثر آکوستو اپتیکی در واقع حالت خاصی از فوتوالاستیسیته (تغییر در ضریب گذر دهی الکتریکی به خاطر کشش مکانیکی) است. فوتوالاستیسیته یعنی تغییر مؤلفه‌های ضریب شکست formula_1 به خاطر کشش مکانیکیformula_2 که formula_4 تانسور فوتو الاستیک است formula_5 در مورد خاص آکوستواپتبک کشش مکانیکی به خاطر موج صوتی منتشرشده در محیط شفاف ایجاد می‌شود که همین موضوع ضریب شکست را تغییر می‌دهد. اگر موج صوتی موج تخت و با راستای انتشار z باشد داریم: و ضریب شکست رابطهٔ ۲ یک توری پراش
z باشد داریم: و ضریب شکست رابطهٔ ۲ یک توری پراش می‌سازد که با سرعت صوت حرکت می‌کند. نوری که از این توری عبور کند یک الگوی پراش می‌سازد. رابطهٔ این الگو به شکل زیر است: که در آن m مرتبهٔ پراش و formula_9 طول موج صوت است. ابزارهای آکوستو اپتیکی. ابزارهای آکوستو اپتیکی شامل سه گروه زیر هستند: "۱- مدولاتور آکوستو اپتیکی" با تغییر پارامترهای موج صوتی مانند دامنه، فاز، فرکانس، و قطبش می‌توان خواص موج نوری را مدوله کرد. برهمکنش نور و صوت همچنین امکان مدوله کردن زمانی و فضایی موج نوری را فراهم می‌آورد. یک راه ساده
و فضایی موج نوری را فراهم می‌آورد. یک راه ساده برای مدوله کردن پرتوی اپتیکی عبور نور از محیطی است که در آن موج صوتی به‌طور متناوب روشن و خاموش شود. وقتی صوت خاموش باشد زاویهٔ پراش صفر و نور بی تغییر است. با روشن شدن صوت پراش رخ می‌دهد و شدت صوت در زوایای پراش افزایش ی یابد. با ثابت نگاه داشتن فرکانس صوتی و تغییر در توان مولد صوت می‌توان این ابزار را به یک مدولاتور آکوستواپتیکی تبدیل نمود. در طراحی مدولاتور باید به نحوی عمل کرد که ماکزیمم شدت نور در پرتوی پراشیده رخ بدهد. مدت زمانی که طول می‌کشد صوت از ماده
رخ بدهد. مدت زمانی که طول می‌کشد صوت از ماده عبور کند نیز محدودیتی بر سرعت سوییچ کردن تحمیل می‌کند. برای همین پرتوی نوری را تا حد ممکن باریک می‌کنند. باریک‌ترین پرتوی نوری ممکن را حد پهنای باند می‌نامند. "۲- فیلترهای آکوستو اپتیکی" رابطهٔ ۴ ارتباطی را میان طول موج صوتی و طول موج نوری نشان می‌دهد. در واقع پرتوی نوری تابیده شده، اگر دارای تعداد زیادی طول موج باشد فقط در طول موج‌های خاصی پراکنده می‌شود. مابقی طول موج‌ها فیلتر خواهند شد. "۳- منحرف‌کننده‌های آکوستو اپتیکی" با ایجاد یک تغییر در فرکانس صوت
آکوستو اپتیکی" با ایجاد یک تغییر در فرکانس صوت می‌توان تغییر زاویه‌ای در پرتوی نوری ایجاد کرد. این تغییر از رابطهٔ زیر پیروی می‌کند. از این خاصیت در ساخت منحرف‌کننده‌ها استفاده می‌کنند.
در پاسخ به سوال الگوریتم چیست باید گفت که به مراحل گام به گام حل یک مسئله، الگوریتم گفته می‌شود. از آنجایی که برنامه‌نویسی با مسائل پیچیده‌ای سر و کار دارد و برنامه نویسان موظف به حل مسائل مختلف به صورت قدم به قدم هستند؛ الگوریتم‌نویسی یک ابزار و ایده مناسب در جهت مشخص کردن طرز صحیح پیاده‌سازی یک برنامه می‌باشد. البته در دوره رایگان آموزش الگوریتم و فلوچارت به صورت کامل این مباحث را مورد بررسی قرار داده ایم. بیایید مبحث الگوریتم را در ذهن خود پیچیده نکنیم. ما با یک تکنولوژی جدید و ساخته شده توسط ناسا یا
ما با یک تکنولوژی جدید و ساخته شده توسط ناسا یا گوگل سر و کار نداریم؛ بلکه صرفا قصد داریم از یک مفهوم کاربردی تحت عنوان الگوریتم استفاده کنیم. الگوریتم‌ها همواره در ذهن بشر بوده و هستند. حتی انسان‌های اولیه برای شکار و رفع گرسنگی از الگوریتم‌های مشخصی استفاده می‌کردند. در ادامه بیشتر با مفهوم الگوریم آشنا خواهید شد. الگوریتم چیست ؟. الگوریتم یا (Algorithm ) در لغت به معنای حل مسئله می‌باشد. یعنی مجموعه‌ای از دستورالعمل‌های متوالی و با جزئیات کامل که برای حل یک مسئله استفاده می‌کنیم. این دستورات باید دقیق و
یک مسئله استفاده می‌کنیم. این دستورات باید دقیق و جامع بوده و به درستی بیان کننده هدفی خاص باشند؛ به طوری که ابهامی در دستورالعمل الگوریتم وجود نداشته باشد. همانطور که پیش از این گفته شد، در زندگی روزمره نیز همواره در حال استفاده کردن از الگوریتم‌های مختلف هستیم. مغز ما برای هر کاری که می‌خواهیم انجام دهیم، شروع به پیاده‌سازی بهترین مراحل می‌کند. به عنوان مثال، در حال حاضر تشنه شدیم و شیشه حاوی آب بر روی میز قرار داشته و یخچال هم در طبقه پایین مستقر است. در اینجاست که مغز ما بهترین روش را به صورت گام به
در اینجاست که مغز ما بهترین روش را به صورت گام به گام برنامه ریزی می‌کند. در ابتدا که تصمیم می‌گیریم به جای رفتن به طبقه پایین و مراجعه به یخچال، از شیشه آب روی میز استفاده کنیم. حال برای استفاده از شیشه، الگوریتم زیر را داریم: در مثال بالا، مغز ما یک الگوریتم حاوی ۷ مرحله در جهت نوشیدن آب از شیشه تولید کرد. ما به صورت پی در پی در حال استفاده از این الگوریتم‌ها هستیم؛ بدون آنکه خودمان متوجه شده یا بدان اهمیتی بدهیم. در زندگی و اجتماع، آن فردی موفق‌تر است که الگوریتم‌های بهتری برای انجام کارهای خود
است که الگوریتم‌های بهتری برای انجام کارهای خود پیاده‌سازی کند. کاربرد الگوریتم چیست ؟. می‌دانیم که سیستم‌های کامپیوتری برای اجرای کارها و انجام وظایف خود نیازمند برنامه یا Program هستند. هر کدام از این برنامه ها، حاوی دستوالعمل‌هایی بوده که به صورت گام به گام اجرا و اعمال می‌شوند. یعنی اگر قرار است کامپیوتر ما پیامی را برای کسی ارسال کند، باید از قبل به صورت قدم به قدم مشخص کرده باشیم که برنامه را باز کن، فلان متن را از کاربر دریافت کن، اتصال به اینترنت را چک کن و پیام را برای فلان شخص بفرست. با توجه به
چک کن و پیام را برای فلان شخص بفرست. با توجه به موارد گفته شده می‌توانیم دریابیم که برنامه نویسی، نقطه شروع تولید یک برنامه نیست. بلکه پیش از شروع برنامه‌نویسی و پیاده‌سازی کدها، بایستی مراحل گام به گام انجام یک کار را داشته باشیم. پس ما برای نوشتن یک برنامه که در کامپیوتر اجرا شود، ابتدا نیازمند الگوریتم آن برنامه یا بازی خواهیم بود. تا خودمان ندانیم که قرار است چه اتفاقی، چگونه و از چه طریقی رخ دهد، قادر به نوشتن برنامه برای کامپیوتر نخواهیم بود.. روش‌های طراحی الگوریتم. کارایی، تحلیل و مرتبه الگوریتم‌ها
طراحی الگوریتم. کارایی، تحلیل و مرتبه الگوریتم‌ها نوشتن الگوریتم به زبان فارسی دو ایراد دارد: تحلیل الگوریتم‌ها. تعیین مقدار میزان کارایی یک الگوریتم در حل مسئله با تحلیل الگوریتم انجام می‌شود. تحلیل پیچیدگی زمانی. زمانی که یک الگوریتم انجام می‌شود با تعداد ورودی‌های الگوریتم افزایش می‌یابد. تحلیل پیچیدگی زمانی یک الگوریتم، تعیین تعداد دفعاتی است که عمل اصلی به ازای هر مقدار از ورودی انجام می‌شود. T(n) را پیچیدگی زمانی الگوریتم در حالت معمول می‌گویند. W(n) را تحلیل پیچیدگی زمانی در بدترین حالت می‌نامند.
را تحلیل پیچیدگی زمانی در بدترین حالت می‌نامند. A(n) را پیچیدگی زمانی در حالت میانگین می‌گویند. عمل اصلی:زمان نوشتن الگوریتم اندازهٔ داده‌ها را معین سپس "چند دستور" را معلوم می‌کنیم که تعداد دفعاتی که این دستورات اجرا می‌شود کل کار الگوریتم را نشان می‌دهد. تحلیل پیچیدگی زمانی برای حالت معمول برای الگوریتم (جمع کردن عناصر آرایه) عمل اصلی: افزودن یک عنصر از آرایه به sum. اندازه ورودی: n، تعداد عناصر آرایه. عمل اصلی همیشه n بار انجام می‌شود یعنی برابر است با T(n) = n تحلیل پیچیدگی زمانی برای حالت معمول برای
T(n) = n تحلیل پیچیدگی زمانی برای حالت معمول برای الگوریتم (مرتب‌سازی تعویضی) عمل اصلی: مقایسه S [j] با S[i]. اندازه ورودی: تعداد عناصری که باید مرتب شوند. بدترین حالت: T(n) = n. تحلیل پیچیدگی زمانی در بدترین حالت برای الگوریتم (جستجوی ترتیبی) عمل اصلی: مقایسه یک عنصر آرایه با x. اندازه ورودی: n، تعداد عناصر موجود در آرایه. بهترین حالت: T(n) = ۱. تحلیل پیچیدگی زمانی در بهترین حالت برای الگوریتم (جستجوی ترتیبی) عمل اصلی: مقایسه یک عنصر آرایه با x. اندازه ورودی: n ، تعداد عناصر آرایه. توضیح: در اولین بار
ورودی: n ، تعداد عناصر آرایه. توضیح: در اولین بار عنصر مورد نظر پیدا شود. مرتبه الگوریتم. الگوریتم‌هایی با پیچیدگی زمانی از قبیل n و 100n را الگوریتم‌های زمانی خطی می‌گویند. مجموعه کامل توابع پیچیدگی را که با توابع درجه دوم محض قابل دسته‌بندی باشند، n²) (θ می‌گویند. آشنایی بیشتر با مرتبه الگوریتم‌ها. برای یک تابع پیچیدگی مفروض ƒ(n),O (ƒ (n) "O بزرگ» مجموعه‌ای از توابع پیچیدگی g (n) است که برای آن‌ها یک ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همهٔ N =&lt;n داریم: g (n)&gt;= c
قسمی که به ازای همهٔ N =&lt;n داریم: g (n)&gt;= c × ƒ (n) برای یک تابع پیچیدگی مفروض ƒ(n)، (Ω (ƒ(n)مجموعه‌ای از توابع پیچیدگی g (n) است که برای آن‌ها یک عدد ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همهٔ N =&lt;n داریم: g (n) =&lt;c × ƒ (n) برای یک تابع پیچیدگی مفروض ƒ(n)، داریم: θ (ƒ(n)) = O (ƒ(n)) ∩ Ω (ƒ(n)) یعنی θ(ƒ(n)) مجموعه‌ای از توابع پیچیدگی g (n) است که برای آن‌ها ثابت‌های حقیقی مثبت c وd و عدد صحیح غیر منفی N وجود دارد به قسمی که: c × ƒ (n) &lt;= d × ƒ(n) برای یک
دارد به قسمی که: c × ƒ (n) &lt;= d × ƒ(n) برای یک تابع پیچیدگی ƒ(n) مفروض، (o(ƒ(n) ”o کوچک” عبارت ازمجموعه کلیه توابع پیچیدگیg (n) است که این شرط را برآورده می‌سازند: به ازای هرثابت حقیقی مثبت c، یک عدد صحیح غیر منفی N وجود دارد به قسمتی که به ازای همهٔ N =&lt;n داریم: g (n) =&lt;c × ƒ (n) روش تقسیم و حل روش تقسیم و حل یک روش بالا به پایین است. حل یک نمونه سطح بالای مسئله با رفتن به جزء و بدست آوردن حل نمونه‌های کوچکتر حاصل می‌شود. هنگام پی ریزی یک الگوریتم بازگشتی، باید: ۱- راهی برای به دست آوردن حل یک
بازگشتی، باید: ۱- راهی برای به دست آوردن حل یک نمونه از روی حل یک نمونه از روی حل یک یا چند نمونه کوچک‌تر طراحی کنیم. ۲- شرط (شرایط) نهایی نزدیک شدن به نمونه (های) کوچک‌تر را تعیین کنیم. ۳- حل را در حالت شرط (شرایط) نهایی تعیین کنیم. انواع روش‌های مرتب‌سازی: مرتب‌سازی ادغامی. ادغام یک فرایند مرتبط با مرتب‌سازی است. ادغام دوطرفه به معنای ترکیب دو آرایه مرتب شده در یک آرایهٔ مرتب است.مرتب‌سازی ادغامی شامل مراحل زیر می‌شود: ۱- تقسیم آرایه به دو زیر آرایه، هر یک با n/2 عنصر. ۲- حل هر زیر آرایه با مرتب‌سازی آن.
با n/2 عنصر. ۲- حل هر زیر آرایه با مرتب‌سازی آن. ۳- ترکیب حل‌های زیر آرایه‌ها از طریق ادغام آن‌ها در یک آرایه مرتب. راهبرد طراحی تقسیم و حل شامل مراحل زیر است: ۱- تقسیم نمونه‌ای از یک مسئله به یک یا چند نمونه کوچکتر. ۲- حل هر نمونه کوچکتر. اگر نمونه‌های کوچک تربه قدر کافی کوچک نبودند، برای این منظور از بازگشت استفاده کنید. ۳- در صورت نیاز، حل نمونه‌های کوچک‌تر را ترکیب کنید تا حل نمونه اولیه به دست آید. مرتب‌سازی سریع. در مرتب‌سازی سریع، ترتیب آن‌ها از چگونگی افراز آرایه‌ها ناشی می‌شود. همه عناصر کوچک‌تر
افراز آرایه‌ها ناشی می‌شود. همه عناصر کوچک‌تر از عنصر محوری در طرف چپ آن و همه عناصر بزرگ‌تر، در طرف راست آن واقع هستند. مرتب‌سازی سریع، به‌طور بازگشتی فراخوانی می‌شود تا هر یک از دو آرایه را مرتب کند، آن‌ها نیز افراز می‌شوند و این روال ادامه می‌یابد تا به آرایه‌ای با یک عنصر برسیم. چنین آرایه‌ای ذاتاً مرتب است.
ثانیهٔ کبیسه (انگلیسی: Leap second) مقدار زمان یک ثانیه است که به زمان UTC ساعت هماهنگ جهانی اضافه می‌شود تا تاریخ روز آن با زمان خورشیدی متوسط هماهنگ شود. آخرین اقدام اضافه کردن ثانیه کبیسه در تاریخ ۳۰ ژوئن ۲۰۱۵ روی داده‌است. پس از سال‌ها بحث در محافل گوناگون استانداردسازی جهانی، در نوامبر ۲۰۲۲ و در ۲۷اُمین نشست کنفرانس عمومی وزن و اندازه‌گیری ، قرار شد که استفاده از ثانیه کبیسه تا سال ۲۰۳۵ کنار گذاشته‌شود. موضوع. استاندارد ساعت هماهنگ جهانی (UTC) مقیاس ثانیه را از دستگاه بین‌المللی یکاها(SI) استفاده
ثانیه را از دستگاه بین‌المللی یکاها(SI) استفاده می‌کند و سنجش آن از روی ساعت اتمی است. این استاندارد برای سنجش زمان، مورد استفادهٔ بسیاری از کشورهاست. با توجه به اینکه متوسط زمان یک روز خورشیدی کمی بیشتر از ۲۴ ساعت (یا ۸۶۴۰۰ ثانیه) است، بنابراین، اگر یک روز UTC را دقیقاً ۸۶۴۰۰ ثانیه در نظر بگیریم، اختلاف زمان جزئی با یک روز استانداردهای زمان خورشیدی (مثل ساعت گرینویچ) پیدا خواهد کرد. موضوع ثانیهٔ کبیسه اصلاح این تفاوت به‌صورت تنظیم آن به ۸۶۴۰۱ یا ۸۶۳۹۹ ثانیه است. مخصوصاً، یک ثانیهٔ کبیسه‌ای مثبت بین ثانیهٔ
است. مخصوصاً، یک ثانیهٔ کبیسه‌ای مثبت بین ثانیهٔ ۲۳:۵۹:۵۹ از یک روز انتخاب شده توسط UTC (که عموماً آخرین روز یک ماه انتخاب می‌شود. معمولاً ۳۰ ژوئن یا ۳۱ دسامبر) و ثانیهٔ ۰۰:۰۰:۰۰ از روز بعد در نظر گرفته می‌شود؛ که این ثانیهٔ اضافه به صورت ۲۳:۵۹:۶۰ در ساعت‌های UTC نشان داده می‌شوند. البته در ساعت‌های محلی وابسته به UTC، این ثانیه می‌تواند در ادامه یه یک ساعت دیگر یا حتی نیم ساعت یا یک ربع ساعت دیگری در نظر گرفته شود، با توجه به این ساعت محلی. ثانیهٔ کبیسه‌ای منفی، ثانیهٔ ۲۳:۵۹:۵۹ را از یک تاریخ مشخص، حذف
منفی، ثانیهٔ ۲۳:۵۹:۵۹ را از یک تاریخ مشخص، حذف می‌کند. به‌طوری‌که آخرین ثانیهٔ روز ۲۳:۵۹:۵۸ می‌شود و ثانیهٔ بعدیِ آن ۰۰:۰۰:۰۰ از روز بعد خواهد بود. اگرچه، UTC از زمان تأسیس خود هیچگاه به ثانیهٔ کبیسه‌ای منفی نیاز پیدا نکرده‌است. تاریخچه. هرچند کلاودیوس بطلمیوس حدود ۱۴۰ سال قبل از میلاد یک روز خورشیدی را به ۶ قسمت مساوی برای نگهداری زمان تقسیم کرده‌بود، ولی این ابوریحان بیرونی بود که در سال ۱۰۰۰ میلادی، یک روز را به ۲۴ قسمت و هر قسمت را به ۶۰ واحد تقسیم کرد. در سال ۱۸۷۴ بود که مقیاس ثانیه (در دستگاه CGS)
در سال ۱۸۷۴ بود که مقیاس ثانیه (در دستگاه CGS) به‌صورت رسمی به‌عنوان پایهٔ واحد زمان منظور گردید. کمی پس از این مساًله وقتی دانشمندان به این نتیجه رسیدند که زمان چرخش زمین متفاوت است، اتحادیه بین‌المللی اخترشناسی IAU در سال ۱۹۵۲ ثانیه را به‌عنوان واحد در سال نجومی در نظر گرفت اما از آنجائیکه سال خورشیدی در محاسبات اساسی تر از سال نجومی قلمداد می‌شود، در سال ۱۹۵۵ IAU ثانیه را به مقدار برای سال ۱۹۰۰ تعیین نمود. بالاخره با توجه به ناکافی بودن این تعریف‌ها، در تاریخ ۱۹۶۷ مجدداً مقدار آن را معادل ۹۱۹۲۶۳۱۷۷۰ دور
۱۹۶۷ مجدداً مقدار آن را معادل ۹۱۹۲۶۳۱۷۷۰ دور تشعشع حاصل از اتم سزیوم تعیین کردند. در چند قرن گذشته متوسط زمان یک روز خورشیدی در حدود ۱٫۷ ثانیه در هر قرن اضافه شده‌است، به‌طوری‌که در سال ۱۹۶۱ روز خورشیدی به مقدار دو هزارم ثانیه بیشتر از ۸۶۴۰۰ ثانیهٔ SI شده‌است و در نتیجه استاندارد بین‌المللی زمان اتمی از ساعت متعارف رسمی گرینویچ جلو افتاده‌است. اضافه کردن ثانیه. در سال ۱۹۷۲ سیستم ثانیهٔ کبیسه ابداع شد، این تطبیق باعث می‌شد که ثانیهٔ UTC با ثانیهٔ زمان استاندارد SI برابر شود. از طرفی چون زمان استاندارد
SI برابر شود. از طرفی چون زمان استاندارد بین‌المللی GMT با زمان ساعت اتمی همزمانی شده بود در نتیجه زمان UTC به مقدار ۱۰ ثانیه از ساعت اتمی عقب می‌افتاد. مسئولیت تنظیم ثانیهٔ کبیسه در ابتدا برعهدهٔ دفتر بین‌المللی زمان بود، ولی در سال ۱۹۸۸ به IERS واگذار شد. هرگاه تفاوت زمان UTC بازمان استاندارد جهانی GMT به بیش از شش‌دهم ثانیه برسد تصمیم به اضافه کردن ثانیهٔ کبیسه می‌کند. سرویس IERS هر ۶ ماه اطلاعیهٔ مربوط یه تغییرات و افزودن ثانیهٔ کبیسه را در بولتن خود منتشر می‌کند، اما تصمیم گرفته‌است که این ثانیه را در
می‌کند، اما تصمیم گرفته‌است که این ثانیه را در ۳۰ ژوئن یا ۳۱ دسامبر اضافه کند.
معاملهٔ پایاپای یا دادوستد پایاپای یا تَهاتُر یا پایاپای یک نوع روش معامله است که در آن کالاها یا خدمات به صورت مستقیم و بدون هیچ واسطه‌ای با کالا یا خدمات دیگر مبادله می‌شود و از هیچ نوع وسیله‌ای برای مبادله استفاده نمی‌شود، یعنی هیچ نوع پولی دریافت نمی‌شود. این نوع مبادله یک حالت دوجانبه دارد البته احتمال سه‌جانبه بودن و چندجانبه بودن نیز وجود دارد. و در کشورهای پیشرفته به صورت همسان و متشابه در کنار نظام پولی آن کشور قرار می‌گیرد. البته معمولاً این حالت وجود دارد و کاربرد آن به صورت محدود می‌باشد. مبادله
دارد و کاربرد آن به صورت محدود می‌باشد. مبادله کالا به کالا معمولاً در بحرانهای مالی و بحرانهای پولی به جای پول مورد استفاده قرار می‌گیرد. به عنوان روش دادوستد جایگزین پول می‌شود. برای نمونه زمانی که پول رایج کشور به صورت غیر پایدار می‌شود (در حالت تورم و چرخه فروکشی قیمت‌ها) یا در زمانی که پول رایج کشور به صورت ساده غیرقابل دسترسی برای هدایت و انجام تجارت می‌باشد. مزایا. 1)‌ در مبادله پاياپاي طرفين معامله هم توليد كننده وهم مصرف كننده بودند 2) درمبادله پاياپاي انبار كردن توليدات براي مدت طولاني بعلت
پاياپاي انبار كردن توليدات براي مدت طولاني بعلت فسادپذيري كالاها و نياز توليد كننده به توليدات ديگران امكان نداشت . 3)‌ توليد از مصرف جدا نبود و مبادله بدون توليد وجود نداشت . لذا مبادله ثروت آفرين نبود بلكه اين توليد بود كه خالق ثروت بحساب مي آمد . 4) رابطه خدمات و توليد ،نظير رابطه توليدات با يكديگر بطريق مستقيم و پاياپاي صورت مي پذيرفت . معایب. 1) نياز متقابل موجب مي شود ارائه كننده يك كالا بايستي فردي را بيابد كه اولاً به كالاي او نياز داشته باشد و ثانياً كالاي مورد احتياج او را نيز عرضه كند كه بروز