NCU CSTP 中央資訊教育平台

NCU CSTP 中央資訊教育平台 「中央資訊教育平台」是由中央大學資工系同學所架設的網頁平台,以推廣程式設計、資訊科學素養為目標,讓有興趣接觸這塊領域的同學,能透過本平台報名營隊活動或是加入線上課程,探索學習相關知識

🦖|演算法入門系列從「能寫出一段程式」到「思考演算法在幹嘛」,中間其實隔著一道不明顯、但非常關鍵的界線😶‍🌫️這系列的出發點,就是想陪大家一起跨過這條線🚀我們透過經典例題、簡易圖解,帶大家一步一步理解:🔹 Python 進階語法:掌握物件導...
13/02/2026

🦖|演算法入門系列

從「能寫出一段程式」到「思考演算法在幹嘛」,中間其實隔著一道不明顯、但非常關鍵的界線😶‍🌫️
這系列的出發點,就是想陪大家一起跨過這條線🚀

我們透過經典例題、簡易圖解,帶大家一步一步理解:

🔹 Python 進階語法:掌握物件導向等語法,為解題打下穩固基礎。
🔹時間複雜度:學會判斷程式效率,讓你不再只靠感覺寫程式。
🔹簡單演算法:從排序、前綴和出發,建立解題的邏輯思維。
🔹圖論:認識圖的結構與遍歷方法,打開中高階題目的大門。

📌 如果你已經看過系列貼文,想更系統性複習、或用題目檢視自己吸收了多少,歡迎讀者們到HackMD 講義,更詳細的敘述、圖解、範例題 通通在這裡:
📚https://hackmd.io/

🦖|演算法入門第十一課:動態規劃(Dynamic Programming, DP)有些問題之所以看起來非常複雜,其實只是因為同樣的選擇被一再重複計算,而動態規劃正是為了解決這類問題而存在的在前一課學過分治法之後,這一課接著來看看動態規劃是如...
27/01/2026

🦖|演算法入門第十一課:動態規劃(Dynamic Programming, DP)

有些問題之所以看起來非常複雜,其實只是因為同樣的選擇被一再重複計算,而動態規劃正是為了解決這類問題而存在的

在前一課學過分治法之後,這一課接著來看看動態規劃是如何透過「記錄結果」,換取更好的效能與決策品質。

🎯 DP 解題三步驟:
1️⃣ 定義子問題:我可以把問題拆成哪些小任務?
2️⃣ 寫出遞迴關係:小任務如何組合成大任務?
3️⃣ 避免重複計算:用表格或記憶化來加速!

透過動態規劃,我們只需要做到一件事:「算一次、記起來、重複使用」🚀

在這組圖文中,我們會向大家介紹:
✅ DP 的核心概念:為什麼「記錄結果」這麼重要
✅ DP 解題的三個關鍵步驟:定義子問題、找遞迴關係、避免重複計算
✅ 以費波那契數列理解:為什麼單純遞迴會變慢
✅ 經典題型:背包問題的基本分類與思考方式

📚 想看完整講義與範例?
👇 透過以下連結查看全文
https://hackmd.io/a6V_R4anTvCx1Wn5e-YSBg

#動態規劃 #演算法

🦖|演算法入門第十課:貪心演算法(Greedy Algorithm)假設你在便利商店打工,遇到一位客人要找 37 元💰你會怎麼找錢?直覺上,大多數人都會從「面額最大的硬幣」開始找,對吧?這種「每一步都先做當下看起來最好的選擇」的思考方式,就...
24/01/2026

🦖|演算法入門第十課:貪心演算法(Greedy Algorithm)

假設你在便利商店打工,遇到一位客人要找 37 元💰
你會怎麼找錢?
直覺上,大多數人都會從「面額最大的硬幣」開始找,對吧?

這種「每一步都先做當下看起來最好的選擇」的思考方式,就是貪心演算法(Greedy Algorithm)的核心精神✨

貪心演算法的做法很單純,就是在解問題的過程中,每一步都選擇局部最佳解,期待這樣一路走下去,最後能得到整體的好結果🚀

在這組圖文中,會透過幾個層次來帶你理解貪心的本質:

✅ 從「找零錢」這種日常情境,直覺理解什麼是貪心選擇
✅ 看看哪些問題只要「先排序」,就能用貪心解掉
✅ 為什麼有些看起來合理的貪心策略,其實會失敗
✅「反悔貪心」這個用來補救貪心缺陷的重要概念

📚 想看完整講義與更多圖解?
👇 透過以下連結查看全文
https://hackmd.io//SkdJioTi1e

🦖|演算法入門第九課:Divide and Conquer當問題變得又大又複雜時,真正困難的往往不是「怎麼解」,而是「不知道從哪裡下手」。分治(Divide and Conquer)演算法的核心想法就是為了讓問題處理變得更容易,簡單來說就是...
15/01/2026

🦖|演算法入門第九課:Divide and Conquer

當問題變得又大又複雜時,真正困難的往往不是「怎麼解」,而是「不知道從哪裡下手」。

分治(Divide and Conquer)演算法的核心想法就是為了讓問題處理變得更容易,簡單來說就是把大問題拆成小問題,再逐一解決,透過這種方法就能讓原先複雜的問題變得可控🚀

在這一課中,我們會先建立分而治之的基本概念,並理解它經典的三個階段:

✅ 分割(Divide):將原問題分割成兩個或多個子問題
✅ 克服(Conquer):用相同的演算法遞迴地解決所有子問題
✅ 合併(Merge):透過合併所有子問題的解答來得到原問題的解

接著我們會透過排序等演算法,讓大家更清楚分治的概念是如何實際運作在演算法設計中的💡

📚 想看完整講義?
👇 透過以下連結查看全文
https://hackmd.io/mHF6PhkFTzmx0CQvuLdxng

🦖|演算法入門第八課:堆積排序(Heap Sort)在資訊爆炸的時代,真正困難的從來不是「資料很多」,而是如何在混亂之中,快速找出最重要的那一個🔍如果我們能把一堆看似雜亂的數字,重新排列成一座有層級、有秩序的金字塔——讓「重要的」永遠站在最...
12/01/2026

🦖|演算法入門第八課:堆積排序(Heap Sort)

在資訊爆炸的時代,真正困難的從來不是「資料很多」,而是如何在混亂之中,快速找出最重要的那一個🔍

如果我們能把一堆看似雜亂的數字,重新排列成一座有層級、有秩序的金字塔——讓「重要的」永遠站在最上面,這樣每次只要伸手就能拿到答案,事情是不是就簡單多了?

這正是 堆積排序(Heap Sort) 的核心想法。

🧱 Heap:有秩序的混亂
堆積是一種特殊的完全二元樹,它不追求整體排序,而是維持一個關鍵規則:
👉 父節點永遠比子節點大(或小)。
這樣一來最大(或最小)的元素,永遠都在「堆頂」。

🔁 Heap Sort:反覆取出關鍵角色
堆積排序的做法很直觀,它會先建立堆結構,再一次次把堆頂取出、調整結構,讓混亂的資料逐步「化亂為序」🚀

📚 完整圖解、Heap 結構與題目應用
👇 透過以下連結查看全文
https://hackmd.io//ryIx5Cuyxg

🦖|演算法入門第七課:圖論——尤拉路徑與尤拉迴路(Euler Path & Euler Circuit)你可能玩過這樣的題目:能不能一筆畫,走過每一條邊,而且不重複?在簡單的圖上,我們很快就能靠直覺找出答案;但當節點變多、連線變複雜時,「試...
09/01/2026

🦖|演算法入門第七課:圖論——尤拉路徑與尤拉迴路(Euler Path & Euler Circuit)

你可能玩過這樣的題目:
能不能一筆畫,走過每一條邊,而且不重複?

在簡單的圖上,我們很快就能靠直覺找出答案;但當節點變多、連線變複雜時,「試試看」開始變得又慢又不可靠。而這類問題,在圖論中被稱為尤拉路徑(Euler Path) 與尤拉迴路(Euler Circuit)。

透過尤拉路徑與尤拉迴路,我們可以在動筆之前,就先判斷:
👉🏻這張圖「能不能一筆畫」
👉🏻必須從哪個點開始
👉🏻是否能走回起點,形成一個完整的迴路

讓看似靠運氣的問題,變成有規則可循的判斷🚀

📚 想看完整的一筆畫判斷規則與圖解示範?
👇 點擊下方連結查看講義內容
https://hackmd.io//Hydgjiaske

🦖|演算法入門第六課:圖論——拓樸排序(Topological Sorting)《莊子.養生主》中,庖丁解牛,遊刃有餘。不是因為他力氣大,而是他清楚知道先後與結構。在現實世界中,許多任務也有這樣的特性——有些事情必須先完成,後面的事才能開始...
02/01/2026

🦖|演算法入門第六課:圖論——拓樸排序(Topological Sorting)

《莊子.養生主》中,庖丁解牛,遊刃有餘。
不是因為他力氣大,而是他清楚知道先後與結構。

在現實世界中,許多任務也有這樣的特性——有些事情必須先完成,後面的事才能開始。當這些依賴關係形成一個龐大而有方向性的網絡時,如何「解」其「牛」,找到一條正確的執行路徑,便成了關鍵🚀

這類「有順序限制」的問題,在圖論中可以用拓樸排序來思考。它專門用來處理有向、且不形成環的圖,幫助我們把複雜的依賴關係,排成一條可執行的順序。

就像庖丁解牛一樣,不是硬拆問題,而是順著結構,把事情一次做好。

📚 完整圖解與例子在講義中
👇 透過以下連結查看全文
https://hackmd.io//H1hyoo6skl

🦖|演算法入門第五課:圖論——BFS 與 DFS在茫茫迷宮中,探路者站在分岔口前。他面前有兩條路——一條是廣而淺,層層推進;一條是深而險,直探到底。在前幾課中,我們已經學會如何用 Graph 來描述問題,接下來,則要來看看:當我們真正走進圖...
26/12/2025

🦖|演算法入門第五課:圖論——BFS 與 DFS

在茫茫迷宮中,探路者站在分岔口前。
他面前有兩條路——
一條是廣而淺,層層推進;
一條是深而險,直探到底。

在前幾課中,我們已經學會如何用 Graph 來描述問題,
接下來,則要來看看:當我們真正走進圖裡時,該怎麼走。

這一堂課,會介紹兩個最經典的圖論搜尋演算法:
廣度優先搜尋(BFS) 與 深度優先搜尋(DFS)。

🌊 BFS:如水漫地
從起點出發,先探索周圍所有可能,再一層一層向外擴展。
搜尋的過程就像水慢慢滲入每個角落,不急著深入,但不漏掉任何方向。

🧗 DFS:如潛入深井
從起點一路往最深處前進,直到再也走不下去,才回頭嘗試其他分岔。
它像一個固執的探險者,不撞到牆,絕不回頭。

🧠 思維轉換
🔎BFS 在意的是「全面」與「最短」
🔎DFS 著眼的是「深入」與「可能性」

在圖論的世界裡,沒有誰一定比較好,只有「你現在想解的是哪一種問題」。
你,會是哪一種探路者?

📚 想看 BFS / DFS 的圖解與範例教學?
👇 透過以下連結查看全文
https://hackmd.io/-0-g8bw/SkSV3ey3Je

🦖|演算法入門第四課:圖論——最小生成樹(MST)假如你要幫一整個社區鋪設網路線,每兩棟建築之間都有不同的施工成本,但你希望所有地方都能連到網路、又不想多拉任何一條沒必要的線,你會怎麼規劃?這類「全部要連到,但總成本要最小」的問題,在演算法...
23/12/2025

🦖|演算法入門第四課:圖論——最小生成樹(MST)

假如你要幫一整個社區鋪設網路線,每兩棟建築之間都有不同的施工成本,但你希望所有地方都能連到網路、又不想多拉任何一條沒必要的線,你會怎麼規劃?

這類「全部要連到,但總成本要最小」的問題,在演算法裡就是一個經典題型:最小生成樹(Minimum Spanning Tree, MST)。

在前一課建立了 Graph 的基本觀念之後,接下來我們會透過 MST 來看看 Graph 如何真正拿來解現實世界的問題。

在這組圖文中,會依序介紹:
✅ MST 的概念
✅ 兩種常見解法:Prim’s Algorithm 與 Kruskal’s Algorithm
✅ Kruskal 中如何避免形成「環」的關鍵想法

透過一步一步的圖示說明,讓大家先理解「演算法在做什麼選擇」,也幫助大家在遇到生活中的成本規劃問題時,能更自然地把問題轉換成 Graph 來思考。

📚 想看完整講義?
👇 透過以下連結查看全文
https://hackmd.io//SkdJioTi1e

🦖|演算法入門第三課:Basic Graph Theory在學會評估演算法效率、也接觸過一些基礎解題技巧後,接下來我們要正式進入 Graph(圖論) 的世界了。這一單元會帶你走過圖論的入門基礎,建立之後學習 BFS、DFS、最短路徑等演算法...
20/12/2025

🦖|演算法入門第三課:Basic Graph Theory

在學會評估演算法效率、也接觸過一些基礎解題技巧後,接下來我們要正式進入 Graph(圖論) 的世界了。
這一單元會帶你走過圖論的入門基礎,建立之後學習 BFS、DFS、最短路徑等演算法所需要的核心概念。

Graph 看起來很抽象,但其實離生活一點也不遠。
像是捷運路線圖、好友關係網、網站之間的連結,甚至是「A 能不能走到 B」,本質上都可以用 Graph 來描述。

在這組圖文中,會依序介紹:
✅Graph 的基本組成
✅常見的 Graph 類型
✅Graph 在程式中常見的儲存方式

透過直覺圖示與簡單說明,讓大家先「看得懂 Graph 在描述什麼」,而不是一開始就被演算法細節淹沒🚀

📚 想看完整講義?
👇 透過以下連結查看全文
https://hackmd.io//B1-JtywhJl

🦖|演算法入門: Simple Algorithms在前一個單元中,我們介紹了 時間複雜度(Time Complexity)與 Big O,學會用同一套標準來評估不同程式寫法的效率。接下來,課程會進入 Simple Algorithms,帶...
15/12/2025

🦖|演算法入門: Simple Algorithms

在前一個單元中,我們介紹了 時間複雜度(Time Complexity)與 Big O,學會用同一套標準來評估不同程式寫法的效率。

接下來,課程會進入 Simple Algorithms,帶你認識一些實際解題時常見、但非常關鍵的演算法概念,例如:排序、前綴和

這些技巧看起來簡單,卻經常是把「暴力解」變成「可通過測資解」的關鍵。

在這組圖文中,會用直覺的動畫比較不同複雜度下演算法效率差異,讓大家更好了解它如何幫助我們更有效率地處理區間問題,演算法不再只是抽象名詞。

📚 想看完整講義?👇 掃描 QR code 或透過以下連結查看全文
https://hackmd.io//SJosmXioJl

🦖|演算法入門必修:Time Complexity在學完 Python 的基礎與進階語法後,我們終於要走進演算法的世界啦!🎉但在開始解題之前,有件更重要的事——先學會判斷程式效率,也就是 時間複雜度(Time Complexity)🔍 為什...
12/12/2025

🦖|演算法入門必修:Time Complexity
在學完 Python 的基礎與進階語法後,我們終於要走進演算法的世界啦!🎉
但在開始解題之前,有件更重要的事——先學會判斷程式效率,也就是 時間複雜度(Time Complexity)

🔍 為什麼需要時間複雜度?
因為「能跑」不代表「跑得好」。
資料一變大,程式可能慢到讓你懷疑人生 🥲
Big O 是一種描述時間複雜度的方法,透過它我們就可以衡量程式效率。

在這堂課裡,我們會用直覺的方式帶你看懂不同方法速度的差別,並讓 Big O 變得好理解、好上手。

📚 想看完整講義?
所有示例、圖解與延伸內容,都整理在講義裡啦!
👇 掃描 QR code 或透過以下網址查看全文
https://hackmd.io//SJosmXioJl

Address

中大路300號
Taoyüan
320

Alerts

Be the first to know and let us send you an email when NCU CSTP 中央資訊教育平台 posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Shortcuts

Share

Category