---
# System prepended metadata

title: 演算法基本特性
tags: [演算法]

---

# 演算法基本概述

演算法就==是一段被定義好的、電腦可以按照指示的步驟和流程==


## 呈現

演算法可以透過許多方式呈現
例如
1. 流程圖

```mermaid
graph TD;
你是不是甲 -- 是 --> say(u r gay)
你是不是甲 -- 不是 --> print(u still gay)
```

2. 虛擬碼
```
if you is gay:
    print "u r gay"
else
    print "u still gay"
endif 
```



## 特性
演算法有幾個基本規範(或者說特性)

1. `有效性`：必須是泛用性的思路，不能換一個環境就無法成立
2. `有限性`：必須在有限的步驟內完成
3. `明確性`：每一個步驟需要明確不能有歧義
4. `I/O`: 必須定義輸出入，可以沒有輸入，但必須有輸出

## 例子

以下選項判斷是否為演算法

1. 紅綠燈的亮燈規則 (||X||)
2. 阿洛玩原神用的按鍵精靈 (||O||)
3. 咪呀狗使用模版來建立筆記(||O||)
4. 和月的上學路線(||X||)

:::spoiler 解析
1. 紅綠燈並不具有有限性，他沒有結束的一天
2. 符合所有條件
3. 由於使用模版是一套固定化流程，並且可以使用腳本自動化完成，因此符合條件
4. 上學路線每天並不固定，換一個環境無法實行了
:::