Recursion, Backtracking and Dynamic Programming in Python

所在平台: Udemy

课程主页: https://www.udemy.com/course/algorithmic-problems-in-python/

课程评论:没有评论

第一个写评论        关注课程

课程简介

Coursera Python 递归、回溯与动态规划课程总结 本课程深入探讨了算法设计中的核心概念,重点关注递归、回溯、动态规划以及分治策略。这些技术在当今软件工程、投资银行和研发等多个领域有着广泛的应用。 **课程结构与内容概览:** * **第一章:递归 (Recursion)** * 介绍递归及其递归方法。 * 讲解堆栈内存和堆内存。 * 解释堆栈溢出。 * 实例包括斐波那契数列、阶乘函数以及经典的汉诺塔问题。 * **第二章:搜索算法 (Search Algorithms)** * 线性搜索方法。 * 二分搜索算法。 * **第三章:选择算法 (Selection Algorithms)** * 定义选择算法。 * 介绍 Hoare 算法。 * 讲解如何在 O(N) 时间内找到第 k 小的元素(k-th order statistics)。 * 分析 Quickselect 算法以及 Median of Medians 算法。 * 讨论 the secretary problem(秘书问题)。 * **第四章:位运算问题 (Bit Manipulation Problems)** * 二进制表示。 * 逻辑运算符和移位运算符。 * 判断奇偶数。 * 位长度问题。 * 俄罗斯农民乘法。 * **第五章:回溯 (Backtracking)** * 回溯法的概念。 * 解决 N 皇后问题、哈密顿循环问题、图着色问题。 * 骑士巡游问题、迷宫问题和数独问题。 * **第六章:动态规划 (Dynamic Programming)** * 动态规划的定义。 * 经典问题包括背包问题、钢筋切割问题、子集和问题。 * Kadane 算法。 * 最长公共子序列 (LCS) 问题。 * **第七章:最优装箱 (Optimal Packing)** * 最优装箱的概念。 * 装箱问题。 * **第八章:分治法 (Divide and Conquer Approaches)** * 分治法的思想。 * 动态规划与分治法的关系。 * 如何实现 O(NlogN) 的归并排序。 * 最近点对问题。 * **第九章:子串搜索算法 (Substring Search Algorithms)** * 子串搜索算法介绍。 * 朴素子串搜索。 * Z 算法。 * Rabin-Karp 算法与哈希。 * KMP (Knuth-Morris-Pratt) 算法。 * **第十章:常见面试题 (Common Interview Questions)** * 谷歌、Facebook、亚马逊等公司的常见面试题。 * 变位词问题、回文问题、整数反转问题。 * 荷兰国旗问题、接雨水问题。 * **第十一章:算法分析 (Algorithms Analysis)** * 如何测量算法运行时间。 * 渐进标记法 (Big O, Big Ω, Big θ)。 * 复杂度类 (P 类和 NP 类算法)。 本课程的教学方式为,在深入讲解理论背景后,从零开始使用 Python 实现这些算法。

课程评论(0条)

课程详情

This course is about the fundamental concepts of algorithmic problems focusing on recursion, backtracking, dynamic programming and divide and conquer approaches. As far as I am concerned, these techniques are very important nowadays, algorithms can be used (and have several applications) in several fields from software engineering to investment banking or R & D.Section 1 - RECURSIONwhat are recursion and recursive methodsstack memory and heap memory overviewwhat is stack overflow?Fibonacci numbersfactorial functiontower of Hanoi problemSection 2 - SEARCH ALGORITHMSlinear search approachbinary search algorithmSection 3 - SELECTION ALGORITHMSwhat are selection algorithms?Hoare's algorithmhow to find the k-th order statistics in O(N) linear running time?quickselect algorithmmedian of medians algorithmthe secretary problemSection 4 - BIT MANIPULATION PROBLEMSbinary numberslogical operators and shift operatorschecking even and odd numbersbit length problemRussian peasant multiplicationSection 5 - BACKTRACKINGwhat is backtracking?n-queens problemHamiltonian cycle problemcoloring problemknight's tour problemmaze problemSudoku problemSection 6 - DYNAMIC PROGRAMMINGwhat is dynamic programming?knapsack problemrod cutting problemsubset sum problemKadane's algorithmlongest common subsequence (LCS) problemSection 7 - OPTIMAL PACKING what is optimal packing?bin packing problemSection 8 - DIVIDE AND CONQUER APPROACHESwhat is the divide and conquer approach?dynamic programming and divide and conquer methodhow to achieve sorting in O(NlogN) with merge sort?the closest pair of points problemSection 9 - Substring Search Algorithmssubstring search algorithmsbrute-force substring searchZ substring search algorithmRabin-Karp algorithm and hashingKnuth-Morris-Pratt (KMP) substring search algorithmSection 10 - COMMON INTERVIEW QUESTIONStop interview questions (Google, Facebook and Amazon)anagram problempalindrome probleminteger reversion problemdutch national flag problemtrapping rain water problemSection 11 - Algorithms Analysishow to measure the running time of algorithmsrunning time analysis with big O (ordo), big Ω (omega) and big θ (theta) notationscomplexity classespolynomial (P) and non-deterministic polynomial (NP) algorithmsIn each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems together from scratch in Python.Thanks for joining the course, let's get started!

课程标签

0人关注该课程

主题相关的课程