tft每日頭條

 > 遊戲

 > 通過遊戲設計了解機器學習算法

通過遊戲設計了解機器學習算法

遊戲 更新时间:2024-07-27 19:41:57


通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)1

來源 | 異步

前段時間大火的國産遊戲——《太吾繪卷》,由于創新的玩法和精良的制作一度廣受好評,然而随着玩家遊戲的深入和時長的積累,發現該遊戲在玩的過程中遊戲外的問題很多很多。


首先是存檔速度慢,然後是密集的計算導緻功耗大量增加,風扇速度高居不下,甚至在高配置設備中也變得越來越卡。

究其原因,還是開發人員對于算法的理解問題。

通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)2


該遊戲存檔是用的json,太吾繪卷在每個月存檔時,都要把所有的數據在磁盤上重寫一遍。實際上,大多數遊戲公司正确的做法是隻寫入變化的部分而不會全量寫入,而太吾繪卷的做法是把很多不變的,預設好的東西也全部重新寫入,必然導緻存檔時占用了極大的空間。


同時,存檔中有大量的0,這說明開發者不知道什麼叫“稀疏矩陣”,結合之前的全量寫入,這無疑又加劇了存檔緩慢的問題。


通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)3

所以算法和數據結構有多重要的呢,它足以讓一款大火的遊戲變得不再具有吸引力,哪怕你其他方面做得再好。帶來了這麼大的影響,恐怕遊戲開發組接下來應該考慮更換程序員的事情了。

著名計算機科學家尼古拉斯·沃斯(Niklaus Wirth)有一句在計算機領域人盡皆知的名言“算法 數據結構=程序”(Algorithm Data Structures=Programs)。


算法這麼重要卻沒有引起國内頂級程序員的重視,不得不說這是一個遺憾。


通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)4


其實,要想學習算法,方法大于努力,以下三個思路和方法可以指導你更好的學習算法:


一.記住算法思想,記住算法結構。


這個是數據結構與算法學習最基礎的部分。


如果你把算法和數據結構系統的過了一遍,那你應該能夠明确這些基本的概念和一些初步的延申問題,什麼是數組,堆棧,隊列,鍊表,字典樹以及哈希表以及相關的問題,這裡所說的記住,是指在自己的腦海中形成長久的記憶。例如以下實用問題:

常見的堆棧面試問題

· 使用堆棧計算後綴表達式

· 對堆棧中的值進行排序

· 檢查表達式中的括号是否平衡


那麼,記住數據結構又需要記住哪些呢?

第一步:記住數據結構最直觀的東西


第二步:記憶某個數據結構的同時,還要記住數據結構的定義,性質與特點。例如在學習哈夫曼樹的時候。


定義是WPL最小的二叉樹。特點:(1)沒有度為1的結點(2)n個葉子結點的哈夫曼樹共有2n-1個結點(3)哈夫曼樹的任意非葉節點的左右子樹交換後仍是哈夫曼樹。


在知道它的定義後,我們可以自己去設計一個算法。如果自己沒想到,在看到先人的解決辦法後,更要随手存下來,去記住它。


通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)5


二、用編程語言實現數據結構的算法


很多時候,理解一個算法後,很容易在紙上去模拟一個算法的實現過程。


但,具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的編程語言實現。這一過程已經不屬于“數據結構與算法”的内容了。而是你綜合素質的體現,如何真正理解問題和用編程技巧實現,很考驗自己。


這一過程,很難靠記憶。需要在不斷敲代碼的過程中去體會一些直覺上的東西。如何用遞歸解決問題,如何使用循環,如何使用"哨兵”等等等等。當然,敲完後需要去思考總結,看看能不能總結出一些”小套路“并記住。


總之,實踐出真知

通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)6


三、記住特定情況特定的算法搭配


每介紹一種數據結構,都可以聯系一個實際問題來作為“引子”,回答了“這種數據結構為什麼會出現”。

比如上述案例中提到的稀疏矩陣,通俗地說,如果邊的數量接近于與頂點的數量呈線性關系,那麼這個圖就是稀疏圖,例如,具有n個頂點和O(n log n)條件的圖一般被認為是稀疏圖。


這些東西,我們也須理解記憶。每一數據結構都有其特性,去解決某一類問題,我們需要去記憶,去感悟。


威著作,助力學習


通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)7


本書是作者Tim Roughgarden(斯坦福大學的教授,主要教授的課程有計算機科學、管理科學與工程。著有圖書《算法詳解(第1卷):算法基礎》)結合在斯坦福大學教授算法課程的實際經驗編寫的系列教程中的第二本。


主要介紹圖搜索及其應用,最短路徑算法以及一些數據結構(如堆、搜索樹、散列表和Bloom過濾器)的應用和實現。


本書是作者Tim Roughgarden(斯坦福大學的教授,主要教授的課程有計算機科學、管理科學與工程。著有圖書《算法詳解(第1卷):算法基礎》)

結合在斯坦福大學教授算法課程的實際經驗編寫的系列教程中的第二本。

主要介紹圖搜索及其應用,最短路徑算法以及一些數據結構(如堆、搜索樹、散列表和Bloom過濾器)的應用和實現。

通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)8

通過遊戲設計了解機器學習算法(一個算法毀了一款好遊戲)9


查看目錄

第1章 圖的基礎知識

1.1 基本術語

1.2 圖的一些應用

1.3 圖形的度量

1.3.1 小測驗1.1鄰接矩陣

1.4.3 和小測驗1.3零代價的基本算法


2.1.3 高層思路

2.2.2 BFS正确性和運行時間

2.2.5 的答案

2.3 計算連通分量

2.3.1 (無向圖連通分量)算法

2.3.4 UCC小測驗2.2的僞碼

2.4.3 什麼時候存在拓撲順序

2.5.3 的拓撲排序

2.5.5 小測驗2.3為什麼要使用深度優先的搜索

2.6.3 一個例子

2.6.6 和小測驗2.6蝴蝶結

2.7.3 一些前提條件

3.1.3 的答案

3.2 Dijkstra算法

3.2.1 一種虛假的簡化

3.3.2 Dijkstra選擇正确的數據結構

4.1.2 其他操作

4.3 堆的應用

4.3.1 應用:中位值維護

4.4 Dijkstra算法的提速

4.4.1 維持不變性

4.4.4 數組形式的堆

4.5.3 操作

4.5.4 操作

4.6 本章要點

4.7 章末習題

挑戰題

編程題

第5章 搜索樹

5.1 有序數組

5.1.1 搜索樹的屬性

5.3.2 (高度)時間内實現Search

5.3.4 和Max

5.3.5 時間内實現OutputSorted操作

5.3.8 強化的搜索樹支持Select的答案

*5.4 平衡搜索樹

5.4.1 的答案

*6.4 更多的實現細節

6.4.1 負載和性能

6.4.2 管理散列表的負載

6.4.3 選擇散列函數

6.4.4 選擇沖突解決策略

6.4.5 小測驗6.6的答案

6.5 布隆過濾器的基礎知識

6.5.1 布隆過濾器支持的操作

6.5.2 布隆過濾器的應用

6.5.3 布隆過濾器的實現

*6.6 布隆過濾器的啟發式分析

6.6.1 啟發式假設

6.6.2 部分位被設置為1

6.6.3 假陽性率

6.6.4 結束語

6.6.5 小測驗6.7的答案

6.7 本章要點

6.8 章末習題

編程題

附錄A 快速回顧漸進性表示法


部分習題答案

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关遊戲资讯推荐

热门遊戲资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved