Курс во алгоритми

Coursera

Опис на програмата

Read the Official Description

Курс во алгоритми

Coursera

Овој курс ги опфаќа основните информации кои секој сериозен програмер треба да знае за алгоритмите и структурите на податоци, со акцент на апликациите и научната анализа на перформансите на имплементацијата на Java. Дел I ги опфаќа основните структури на податоци, сортирање и пребарување алгоритми. Дел II се фокусира на алгоритми за обработка на графики и низи.

НЕДЕЛА 1

Се разбира Вовед

Добредојдовте во алгоритми, дел I.

Унија-Најди

Ние го илустрираме нашиот основен пристап во развивањето и анализирањето на алгоритмите со разгледување на проблемот со динамичкото поврзување. Ние го воведуваме типот на податоци за обединување и разгледуваме неколку имплементации (брзо наоѓање, брзо поврзување, пондерирано брзо поврзување и пондерирано брзо поврзување со компресија на патеката). Конечно, го применивме типот на податоци за синдикално откривање на проблемот со перколација од физичката хемија.

Анализа на алгоритми

Основата на нашиот пристап за анализа на перформансите на алгоритмите е научниот метод. Почнуваме со изведување на компјутерски експерименти за мерење на времето за работа на нашите програми. Ние ги користиме овие мерења за да развиеме хипотези за перформансите. Потоа создаваме математички модели за да го објаснат нивното однесување. Конечно, размислуваме за анализа на користењето на меморијата на нашите Java-програми.

НЕДЕЛА 2

Купишта и редици

Разгледуваме два основни типови на податоци за складирање на збирки на објекти: оџакот и редот. Ние ги имплементираме секој со користење на листа со поединечно поврзана или низа со големини. Ние воведуваме две напредни Java-функции-генерики и итератори-кои го поедноставуваат кодот на клиентот. Конечно, разгледуваме разни апликации на стекови и редици кои се движат од парсирање аритметички изрази до симулирање системи за редица.

Основни видови

Ние го претставуваме проблемот со сортирање и Java Comparable интерфејс. Ние ги проучуваме две основни методи за сортирање (сортирање и вметнување сортирање) и варијација на еден од нив (shellsort). Исто така, разгледуваме два алгоритма за рамномерно префрлување на низа. Заклучуваме со примена на сортирање за да го пресметаме конвексниот корпус преку алгоритам за скенирање на Греам.

НЕДЕЛА 3

Mergesort

Ние го проучуваме алгоритмот за спојување и покажеме дека гарантира дека ќе ги сортираме сите низи од n елементи со најмногу n lg n компарации. Ние, исто така, сметаме дека е нерекурзивна верзија од дното нагоре. Ние докажуваме дека секој алгоритам за сортирање врз основа на споредување мора да направи барем n lg n да се споредува во најлош случај. Разговаравме за користење на различни наредби за објектите што ги сортиравме и поврзаниот концепт на стабилност.

Quicksort

Ние го воведуваме и имплементираме рандомизираниот алгоритам на quicksort и анализираме неговата ефикасност. Ние, исто така, сметаме дека рандомизирани quickselect, quicksort варијанта која го наоѓа kth најмалиот елемент во линеарно време. Конечно, сметаме 3-насочен quicksort, варијанта на quicksort која работи особено добро во присуство на дупликат клучеви.

НЕДЕЛА 4

Приоритетни редици

Ние го воведуваме типот на тип на приоритетна задача и ефикасна имплементација користејќи ја бинарната структура на податоци. Оваа имплементација, исто така, води до ефикасен алгоритам за сортирање познат како heapsort. Заклучуваме со апликации на приоритетни редици каде што симулираме движење на n честички предмет на законите на еластичен судир.

Основни симболни табели

Ние дефинираме API за табели на симболи (исто така познати како асоцијативни низи, мапи или речници) и опишуваат две елементарни имплементации со користење на сортирана низа (бинарно пребарување) и некоректна листа (секвенцијално пребарување). Кога копчињата се споредливи, ние дефинираме проширен API кој ги вклучува дополнителните методи min, max floor, ceiling, rank и select. За да развиеме ефикасна имплементација на овој API, ние ја проучуваме структурата на податоци за бинарно пребарување на дрвото и ја анализираме неговата ефикасност.

Недела 5

Балансирано пребарување дрвја

Во ова предавање, нашата цел е да развиеме табела со симболи со загарантирани логаритамски перформанси за пребарување и вметнување (и многу други операции). Започнуваме со 2-3 дрва, кои се лесни за анализирање, но тешко да се имплементираат. Следно, сметаме црвено-црни бинарни дрва за пребарување, кои ги гледаме како нов начин да се спроведат 2-3 дрва како бинарни дрва за пребарување. Конечно, ние воведуваме Б-дрва, генерализација на 2-3 дрва кои се широко користени за спроведување на датотечни системи.

Геометриски апликации на БСТ

Почнуваме со пребарување на 1d и 2d опсег, каде што целта е да ги пронајдеме сите точки во даден интервал од 1d или 2d. За да го постигнеме ова, ги разгледуваме kd-дрвјата, природна генерализација на BSTs кога клучевите се точки во рамнината (или повисоки димензии). Исто така, ги разгледуваме проблемите со пресек, каде што целта е да ги пронајдеме сите вкрстувања меѓу сет од сегменти или правоаголници.

Недела 6

Хаш Табели

Почнуваме со опишување на посакуваните својства на хаш-функцијата и како да ги имплементираме во Јава, вклучувајќи го и основното начело познато како униформа хиша-претпоставка која е во основата на потенцијалниот успех на хаш-апликацијата. Потоа, разгледуваме две стратегии за имплементирање на хаш-табели - одвоени верижни и линеарни сонди. Двете стратегии даваат перформанси за постојано време за пребарување и вметнуваат под претпоставка за унифицирана хашинг.

Примена на табела со симболи

Разгледуваме различни апликации од табели на симболи, вклучувајќи множества, клиенти на зборови, клиенти за индексирање и редок вектори.

This school offers programs in:
  • Англиски


Последен пат ажурирани August 4, 2017
Времетраењето и Цена
This course is Он-лајн студии
Start Date
Дата на започнување
Sept. 2018
Duration
Време на траење
6 Недели
Дел-студии
Locations
Соединети Американски Држави - USA Online
Дата на започнување : Sept. 2018
Крајна дата за аплицирање Контактирај
Дата на завршување Контактирај
Dates
Sept. 2018
Соединети Американски Држави - USA Online
Крајна дата за аплицирање Контактирај
Дата на завршување Контактирај