产品经理必掌握的基础算法


1、前言

未來的世界,一定是信息科技主導的世界。未來的任何產品,都離不開信息科技的支撐。不論你是哪個領域的產品經理,掌握一些基礎的算法,是非常有必要的。而如今的一些比較優秀的產品經理,如蘋果產品創造人——喬布斯,小米產品創造人——雷軍,QQ產品創始人——馬化騰,微信產品負責人——張小龍,或多或少都有技術背景。當然,并不是說產品經理必須要有技術背景,因為有些沒有技術背景的產品經理做的也不錯。而本文想要表達的意思是,產品經理掌握一些基礎的算法,可以為自己的產品設計,產品邏輯,產品形態起到錦上添花的作用。因此,本文結合作者這些年的工作經驗,梳理出幾個比較簡單基礎的算法,而且這些基礎算法,的確可以在產品設計過程中發揮作用,可以使產品經理在設計產品時,產品邏輯更加清晰,可以更加全面掌握產品特性。本文的程序算法,使用大家比較常見的Python語言進行描述。

2、基礎算法

2.1 排序算法

排序算法有很多種,如冒泡排序、選擇排序、稀爾排序、歸并排序、堆排序、插入排序、快速排序等。如果是計算機專業這幾種算法應該是相當熟悉了,如果不是計算機專業的學生,其實全部掌握也沒必要。用什么排序不重要,主要是知道其中的邏輯。為了便于大家理解,還是直接以實例的形式進行講解。實例不是很復雜,主要是方便大家理解邏輯。

目前有一個數組,數組里是6個數,我們需要將這個數組里的數按從小到大順序排列。

待排序的數組:arr=[4,6,3,9,1,3]

基本實現思路:

(1)構建一個臨時存放數據的參數:temp。

(2)從數組中第一個元素開始,依次對兩個相鄰的元素進行比較,如果左側的數字大于右側的數字,則交換位置,交換位置,就需要用到temp。

(3)運算過程:arr[0]=4,arr[1]=6,4<6,滿足條件,則繼續

(4)arr[2]=3,而6>3,則需要將 arr[1]和arr[2]交換位置,令temp =aar[1],這時temp的值是6,arr[1]=arr[2],這時arr[1]的值為3,arr[2]=temp,arr[2]值為6。

(5)arr[2]=6,再與arr[3]=9作比較,滿足條件。

(6)arr[3]=9再與arr[4]=1作比較,9大于4,交換。則arr[3]=1,arr[4]=9。

(7)arr[4]=9再與arr[5]=3作比較,9大于3,交換。則arr[4]=3,arr[5]=9。

(8)這時的數組順序變為[4,3,6,1,3,9]。

(9)繼續從數組的第一個元素開始,重復上述過程。

我們接下來看一下按照以上思路,數組中的元素是如何變化的:

第一次:[4,3,6,1,3,9]

第二次:[3,4,1,3,6,9]

第三次:[3,1,3,4,6,9]

第四次:[1,3,3,4,6,9]

我們為了驗證我們的思路,程序代碼如下:


2.2 聚類算法

聚類算法在實際生產生活中用途比較廣泛,像數據統計分析,人工智能識別物體,信息分類歸集等。比較常見的聚類算法有:凝聚層次聚類、圖團體檢測(Graph Community Detection)、K-Means(K均值)聚類、均值漂移聚類、基于密度的聚類方法(DBSCAN)、高斯混合模型(GMM)的最大期望(EM)聚類等。當然,以上這些算法專業性太強了。如果不從事專門領域的工作,產品經理用到這些算法的可能性也很小。本文今天講一個最為基礎的聚類算法,非常便于大家理解。

我們還是以數組為例,arr=[1,1,2,3,5,4,5,4,2,3,3,1,3,3,4,5],我們的所謂的聚類,就是要統計這個數組中每個數字出現的次數。最終我們想到達到這樣的輸出結果:

1出現3次

2出現2次

3出現5次

4出現3次

5出現3次

基本實現思路:

(1)我們首先計算數字的長度,根據長度進行遍歷。

(2)構建一個字典。當并數組中的值作為字典的key,出現的次數作為value。

(3)如果某個元素沒有在字典中,則記錄這個元素為key,value初始為1。

(4)如果某個元素已經存在在字典中,則更新這個元素的value+1。

(5)遍歷完成,輸出字典值。

我們為了驗證我們的思路,程序代碼如下:


由于我們是沒有排序的,所以輸出順序與之前預想的順序有些差異。如果需要排序,則可以先將原數組中的數據排序后,再進行計算。

2.3 旋轉算法

旋轉的應用大家應該不陌生。最常見的就是手機或是電腦中查看照片的時候,照片的左轉右轉。圖片旋轉、視頻旋轉、文字內容旋轉,其實歸根到底都是數字矩陣的旋轉。因為所有的這些表現形式,底層都是一個個二進制的數字組成的。接下來,我們就是要在最基礎的邏輯展開分析。

我們還是以數組進行講解。我們有數組 arr=[[1,2,3],[4,5,6]],準備向右旋轉90度。為了便于大家理解,我這樣表示:

原數組:

[1,2,3]

[4,5,6]

我們認為,數組的寬度[1,2,3]=3,為x軸。數組的高度2,為y軸。

向右旋轉90度的后數組:

[3,6]

[2,5]

[1,4]

這時,寬度x變為2,高度y變為3。

基本實現思路:

1、我們觀查上述數組發現,向右旋轉90度后,組的維度由 2*3,變為了3*2。

2、而數字位置變化如下:

1:[0][0]->[2][0]

2:[0][1]->[1][0]

3:[0][2]->[0][0]

4:[1][0]->[2][1]

5:[1][1]->[1][1]

6:[1][2]->[0][1]

3、我們觀察上述數字變化,大家發現什么規律沒?每個數的數組x和y坐標都左右進行了對調,變換后的y坐標是原x坐標的倒序。

4、進行對原數組寬度x(設為i)和高度y(設為j)的遍歷,x遍歷i的增加,正是新數字的坐標的減少。

即:新數組位置([x-1-i][j]=舊數組位置([j][i])

我們為了驗證我們的思路,程序代碼如下:


為了便于大家理解,將原數組的值在遍歷的時候也進行了輸出展示。

我們再思維擴展一下,按我們這種思路,如果數組要向左旋轉90度呢?

原數組:

[1,2,3]

[4,5,6]

向左旋轉90度之后的數組:

[4,1]

[5,2]

[6,3]

即:

1:[0][0]->[0][1]

2:[0][1]->[1][1]

3:[0][2]->[2][1]

4:[1][0]->[0][0]

5:[1][1]->[1][0]

6:[1][2]->[2][0]

大家又會發現什么規律呢?是不是新數組y坐標同原數組x坐標增長趨勢一致,而新數組x的坐標,是原數組x坐標的倒序?

也就是說,對原數組寬度x(設為i)和高度y(設為j)的遍歷,高度y遍歷j的增加,正是新數字的x坐標的減少。即:新數組位置([i][y-1-j]=舊數組位置([j][i])

我們為了驗證我們的思路,程序代碼如下:


經過上述分析,大家是不是對旋轉算法有了一個清晰的認識?如果想旋轉180度呢?這個大家有興趣,可以按照上述思路進行分析實踐。

3、總結

對于產品經理而言,精通本領域的基礎知識,熟悉業務與產品模式是必須具備的技能。而對于算法的了解和掌握,可以起到錦上添花的作用。算法,是鍛煉產品經理的邏輯思維相對比較好的訓練工具。有興趣的同學,可以多看一些這方向的書籍,也有很多比較有意思的算法,可以在工作之余練練手,調節一下心情。畢竟產口經理的日常,不僅僅是寫個需求,更多的,還要看市場、看政策、看方向、看競品、懂運營、懂業務、懂管理、懂營銷、會分析、會溝通、會寫PPT。需要做的工作內容還很多。而至于最終的產品能不能成功,還要看運氣。個人的力量太渺小了,很多產品經理的成功,其實是趕上了趨勢。處在大環境上升趨勢的時候,覺得自己的能力很強,其實有時候也是一種誤判,結果大環境一旦發生變化,處在下降趨勢的時候,往往就會把前幾年靠運氣積累的財富,這些年憑本事賠光了。所以說,產品經理太難了。正因為如此,產品經理需要時刻保持清醒客觀的頭腦,而算法是一個相當不錯的朋友,當你驕傲時讓你冷靜,當你自卑時給你信心,當你迷茫時給你方向。


原創不易,如果大家覺得本文對您有幫助,請多多轉發。

如果大家有產品、數據分析、程序設計、金融工程方面的問題,歡迎大家關注公眾號:佳佳原創,留言咨詢。

感謝大家閱讀~

作者:王佳亮,中國計算機學會(CCF)會員。微信公眾號:佳佳原創


午夜a成v人电影,亚洲av永久无码精品漫画,中国china体内裑精亚洲日本