精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

熱門游戲2048 - AI程序算法分析

開發 后端 前端 算法
2048本質上可以抽象成信息對稱雙人對弈模型(玩家向四個方向中的一個移動,然后計算機在某個空格中填入2或4)。這里“信息對稱”是指在任一時刻對弈雙方對格局的信息完全一致,移動策略僅依賴對接下來格局的推理。

針對目前火爆的2048游戲,有人實現 了一個AI程序,可以以較大概率(高于90%)贏得游戲,并且作者在stackoverflow上簡要介紹了AI的算法框架和實現思路。但是這個回答主要集中在啟發函數的選取上,對AI用到的核心算法并沒有仔細說明。這篇文章將主要分為兩個部分,第一部分介紹其中用到的基礎算法,即Minimax和Alpha-beta剪枝;第二部分分析作者具體的實現。

基礎算法

2048本質上可以抽象成信息對稱雙人對弈模型(玩家向四個方向中的一個移動,然后計算機在某個空格中填入2或4)。這里“信息對稱”是指在任一時刻對弈雙方對格局的信息完全一致,移動策略僅依賴對接下來格局的推理。作者使用的核心算法為對弈模型中常用的帶Alpha-beta剪枝的Minimax。這個算法也常被用于如國際象棋等信息對稱對弈AI中。

Minimax

下面先介紹不帶剪枝的Minimax。首先本文將通過一個簡單的例子說明Minimax算法的思路和決策方式。

問題

現在考慮這樣一個游戲:有三個盤子A、B和C,每個盤子分別放有三張紙幣。A放的是1、20、50;B放的是5、10、100;C放的是1、5、20。單位均為“元”。有甲、乙兩人,兩人均對三個盤子和上面放置的紙幣有可以任意查看。游戲分三步:

  1. 甲從三個盤子中選取一個。

  2. 乙從甲選取的盤子中拿出兩張紙幣交給甲。

  3. 甲從乙所給的兩張紙幣中選取一張,拿走。

其中甲的目標是最后拿到的紙幣面值盡量大,乙的目標是讓甲最后拿到的紙幣面值盡量小。

下面用Minimax算法解決這個問題。

基本思路

一般解決博弈類問題的自然想法是將格局組織成一棵樹,樹的每一個節點表示一種格局,而父子關系表示由父格局經過一步可以到達子格局。Minimax也不例外,它通過對以當前格局為根的格局樹搜索來確定下一步的選擇。而一切格局樹搜索算法的核心都是對每個格局價值的評價。Minimax算法基于以下樸素思想確定格局價值:

  • Minimax是一種悲觀算法,即假設對手每一步都會將我方引入從當前看理論上價值最小的格局方向,即對手具有完美決策能力。因此我方的策略應該是選擇那些對方所能達到的讓我方最差情況中最好的,也就是讓對方在完美決策下所對我造成的損失最小。

  • Minimax不找理論最優解,因為理論最優解往往依賴于對手是否足夠愚蠢,Minimax中我方完全掌握主動,如果對方每一步決策都是完美的,則我方可以達到預計的最小損失格局,如果對方沒有走出完美決策,則我方可能達到比預計的最悲觀情況更好的結局。總之我方就是要在最壞情況中選擇最好的。

上面的表述有些抽象,下面看具體示例。

解題

下圖是上述示例問題的格局樹:

注意,由于示例問題格局數非常少,我們可以給出完整的格局樹。這種情況下我可以找到Minimax算法的全局最優解。而真實情況中,格局樹非常龐大,即使是計算機也不可能給出完整的樹,因此我們往往只搜索一定深度,這時只能找到局部最優解。

我們從甲的角度考慮。其中正方形節點表示輪到我方(甲),而三角形表示輪到對方(乙)。經過三輪對弈后(我方-對方-我方),將進入終局。黃色葉結點表示所有可能的結局。從甲方看,由于最終的收益可以通過紙幣的面值評價,我們自然可以用結局中甲方拿到的紙幣面值表示終格局的價值。

下面考慮倒數第二層節點,在這些節點上,輪到我方選擇,所以我們應該引入可選擇的最大價值格局,因此每個節點的價值為其子節點的最大值:

這些輪到我方的節點叫做max節點,max節點的值是其子節點最大值。

倒數第三層輪到對方選擇,假設對方會盡力將局勢引入讓我方價值最小的格局,因此這些節點的價值取決于子節點的最小值。這些輪到對方的節點叫做min節點。

最后,根節點是max節點,因此價值取決于葉子節點的最大值。最終完整賦值的格局樹如下:

總結一下Minimax算法的步驟:

  1. 首先確定最大搜索深度D,D可能達到終局,也可能是一個中間格局。

  2. 在最大深度為D的格局樹葉子節點上,使用預定義的價值評價函數對葉子節點價值進行評價。

  3. 自底向上為非葉子節點賦值。其中max節點取子節點最大值,min節點取子節點最小值。

  4. 每次輪到我方時(此時必處在格局樹的某個max節點),選擇價值等于此max節點價值的那個子節點路徑。

在上面的例子中,根節點的價值為20,表示如果對方每一步都完美決策,則我方按照上述算法可最終拿到20元,這是我方在Minimax算法下最好的決策。格局轉換路徑如下圖紅色路徑所示:

對于真實問題中的Minimax,再次強調幾點:

  • 真實問題一般無法構造出完整的格局樹,所以需要確定一個最大深度D,每次最多從當前格局向下計算D層。

  • 因為上述原因,Minimax一般是尋找一個局部最優解而不是全局最優解,搜索深度越大越可能找到更好的解,但計算耗時會呈指數級膨脹。

  • 也是因為無法一次構造出完整的格局樹,所以真實問題中Minimax一般是邊對弈邊計算局部格局樹,而不是只計算一次,但已計算的中間結果可以緩存。

#p#

Alpha-beta剪枝

簡單的Minimax算法有一個很大的問題就是計算復雜性。由于所需搜索的節點數隨最大深度呈指數膨脹,而算法的效果往往和深度相關,因此這極大限制了算法的效果。

Alpha-beta剪枝是對Minimax的補充和改進。采用Alpha-beta剪枝后,我們可不必構造和搜索最大深度D內的所有節點,在構造過程中,如果發現當前格局再往下不能找到更好的解,我們就停止在這個格局及以下的搜索,也就是剪枝。

Alpha-beta基于這樣一種樸素的思想:時時刻刻記得當前已經知道的最好選擇,如果從當前格局搜索下去,不可能找到比已知最優解更好的解,則停止這個格局分支的搜索(剪枝),回溯到父節點繼續搜索。

Alpha-beta算法可以看成變種的Minimax,基本方法是從根節點開始采用深度優先的方式構造格局樹,在構造每個節點時,都會讀取此節點的alpha和beta兩個值,其中alpha表示搜索到當前節點時已知的最好選擇的下界,而beta表示從這個節點往下搜索最壞結局的上界。由于我們假設對手會將局勢引入最壞結局之一,因此當beta小于alpha時,表示從此處開始不論最終結局是哪一個,其上限價值也要低于已知的最優解,也就是說已經不可能此處向下找到更好的解,所以就會剪枝。

下面同樣以上述示例介紹Alpha-beta剪枝算法的工作原理。我們從根節點開始,詳述使用Alpha-beta的每一個步驟:

  1. 根節點的alpha和beta分別被初始化為−∞,和+∞

  2. 深度優先搜索第一個孩子,不是葉子節點,所以alpha和beta繼承自父節點,分別為−∞,和+∞

  3. 搜索第三層的第一個孩子,同上。

  4. 搜索第四層,到達葉子節點,采用評價函數得到此節點的評價值為1。

  5. 此葉節點的父節點為max節點,因此更新其alpha值為1,表示此節點取值的下界為1。

  6. 再看另外一個子節點,值為20,大于當前alpha值,因此將alpha值更新為20。

  7. 此時第三層最左節點所有子樹搜索完畢,作為max節點,更新其真實值為當前alpha值:20。

  8. 由于其父節點(第二層最左節點)為min節點,因此更新其父節點beta值為20,表示這個節點取值最多為20。

  9. 搜索第二層最左節點的第二個孩子及其子樹,按上述邏輯,得到值為50(注意第二層最左節點的beta值要傳遞給孩子)。由于50大于20,不更新min節點的beta值。

  10. 搜索第二層最左節點的第三個孩子。當看完第一個葉子節點后,發現第三個孩子的alpha=beta,此時表示這個節點下不會再有更好解,于是剪枝。

  11. 繼續搜索B分支,當搜索完B分支的第一個孩子后,發現此時B分支的alpha為20,beta為10。這表示B分支節點的最大取值不會超過10,而我們已經在A分支取到20,此時滿足alpha大于等于beta的剪枝條件,因此將B剪枝。并將B分支的節點值設為10,注意,這個10不一定是這個節點的真實值,而只是上線,B節點的真實值可能是5,可能是1,可能是任何小于10的值。但是已經無所謂了,反正我們知道這個分支不會好過A分支,因此可以放棄了。

  12. 在C分支搜索時遇到了與B分支相同的情況。因此講C分支剪枝。

此時搜索全部完畢,而我們也得到了這一步的策略:應該走A分支。

可以看到相比普通Minimax要搜索18個葉子節點相比,這里只搜索了9個。采用Alpha-beta剪枝,可以在相同時間內加大Minimax的搜索深度,因此可以獲得更好的效果。并且Alpha-beta的解和普通Minimax的解是一致的。

#p#

針對2048游戲的實現

下面看一下ov3y同學針對2048實現的AI。程序的github在這里,主要程序都在ai.js中。

建模

上面說過Minimax和Alpha-beta都是針對信息對稱的輪流對弈問題,這里作者是這樣抽象游戲的:

  • 我方:游戲玩家。每次可以選擇上、下、左、右四個行棋策略中的一種(某些格局會少于四種,因為有些方向不可走)。行棋后方塊按照既定邏輯移動及合并,格局轉換完成。

  • 對方:計算機。在當前任意空格子里放置一個方塊,方塊的數值可以是2或4。放置新方塊后,格局轉換完成。

  • 勝利條件:出現某個方塊的數值為“2048”。

  • 失敗條件:格子全滿,且無法向四個方向中任何一個方向移動(均不能觸發合并)。

如此2048游戲就被建模成一個信息對稱的雙人對弈問題。

格局評價

作為算法的核心,如何評價當前格局的價值是重中之重。在2048中,除了終局外,中間格局并無非常明顯的價值評價指標,因此需要用一些啟發式的指標來評價格局。那些分數高的“好”格局是容易引向勝利的格局,而分低的“壞”格局是容易引向失敗的格局。

作者采用了如下幾個啟發式指標。

單調性

單調性指方塊從左到右、從上到下均遵從遞增或遞減。一般來說,越單調的格局越好。下面是一個具有良好單調格局的例子:

[[111205]]

平滑性

平滑性是指每個方塊與其直接相鄰方塊數值的差,其中差越小越平滑。例如2旁邊是4就比2旁邊是128平滑。一般認為越平滑的格局越好。下面是一個具有極端平滑性的例子:

空格數

這個很好理解,因為一般來說,空格子越少對玩家越不利。所以我們認為空格越多的格局越好。

孤立空格數

這個指標評價空格被分開的程度,空格越分散則格局越差。

具體來說,2048-AI在評價格局時,對這些啟發指標采用了加權策略。具體代碼如下:

  1. // static evaluation function  
  2. AI.prototype.eval = function() {  
  3.     var emptyCells = this.grid.availableCells().length;  
  4.    
  5.     var smoothWeight = 0.1,  
  6.         //monoWeight   = 0.0,  
  7.         //islandWeight = 0.0,  
  8.         mono2Weight  = 1.0,  
  9.         emptyWeight  = 2.7,  
  10.         maxWeight    = 1.0;  
  11.    
  12.     return this.grid.smoothness() * smoothWeight  
  13.         //+ this.grid.monotonicity() * monoWeight  
  14.         //- this.grid.islands() * islandWeight  
  15.         + this.grid.monotonicity2() * mono2Weight  
  16.         + Math.log(emptyCells) * emptyWeight  
  17.         + this.grid.maxValue() * maxWeight;  
  18. }; 

有興趣的同學可以調整一下權重看看有什么效果。

對對方選擇的剪枝

在這個程序中,除了采用Alpha-beta剪枝外,在min節點還采用了另一種剪枝,即只考慮對方走出讓格局最差的那一步(而實際2048中計算機的選擇是隨機的),而不是搜索全部對方可能的走法。這是因為對方所有可能的選擇為“空格數×2”,如果全部搜索的話會嚴重限制搜索深度。

相關剪枝代碼如下:

  1. // try a 2 and 4 in each cell and measure how annoying it is  
  2. // with metrics from eval  
  3. var candidates = [];  
  4. var cells = this.grid.availableCells();  
  5. var scores = { 2: [], 4: [] };  
  6. for (var value in scores) {  
  7.     for (var i in cells) {  
  8.         scores[value].push(null);  
  9.         var cell = cells[i];  
  10.         var tile = new Tile(cell, parseInt(value, 10));  
  11.         this.grid.insertTile(tile);  
  12.         scores[value][i] = -this.grid.smoothness() + this.grid.islands();  
  13.         this.grid.removeTile(cell);  
  14.     }  
  15. }  
  16.    
  17. // now just pick out the most annoying moves  
  18. var maxScore = Math.max(Math.max.apply(null, scores[2]), Math.max.apply(null, scores[4]));  
  19. for (var value in scores) { // 2 and 4  
  20.     for (var i=0; i<scores[value].length; i++) {  
  21.         if (scores[value][i] == maxScore) {  
  22.             candidates.push( { position: cells[i], value: parseInt(value, 10) } );  
  23.         }  
  24.     }  

搜索深度

在2048-AI的實現中,并沒有限制搜索的最大深度,而是限制每次“思考”的時間。這里設定了一個超時時間,默認為100ms,在這個時間內,會從1開始,搜索到所能達到的深度。相關代碼:

  1. // performs iterative deepening over the alpha-beta search  
  2. AI.prototype.iterativeDeep = function() {  
  3.     var start = (new Date()).getTime();  
  4.     var depth = 0;  
  5.     var best;  
  6.     do {  
  7.         var newBest = this.search(depth, -10000, 10000, 0 ,0);  
  8.         if (newBest.move == -1) {  
  9.             //console.log('BREAKING EARLY');  
  10.             break;  
  11.         } else {  
  12.             best = newBest;  
  13.         }  
  14.         depth++;  
  15.     } while ( (new Date()).getTime() - start < minSearchTime);  
  16.     //console.log('depth', --depth);  
  17.     //console.log(this.translate(best.move));  
  18.     //console.log(best);  
  19.     return best  

因此這個算法實現的效果實際上依賴于執行javascript引擎機器的性能。當然可以通過增加超時時間來達到更好的效果,但此時每一步行走速度會相應變慢。

算法的改進

目前這個實現作者聲稱成功合成2048的概率超過90%,但是合成4096甚至8192的概率并不高。作者在github項目的REAMDE中同時給出了一些優化建議,這些建議包括:

  • 緩存結果。目前這個實現并沒有對已搜索的樹做緩存,每一步都要重新開始搜索。
  • 多線程搜索。由于javascript引擎的單線程特性,這一點很難做到,但如果在其它平臺上也許也可考慮并行技術。
  • 更好的啟發函數。也許可以總結出一些更好的啟發函數來評價格局價值。

參考文獻

  1. 2048 Game
  2. 2048-AI github
  3. An Exhaustive Explanation of Minimax, a Staple AI Algorithm
  4. Tic Tac Toe: Understanding the Minimax Algorithm
  5. CS 161 Recitation Notes - Minimax with Alpha Beta Pruning

原文鏈接:http://blog.codinglabs.org/articles/2048-ai-analysis.html

【編輯推薦】

  1. 數據結構與算法的JavaScript實現及應用:Stack/遞歸/漢諾
  2. 熱門游戲 2048 C++ 源代碼分享
  3. 李炎恢老師JavaScript第一季視頻教程(149集)
  4. 測試系列課程之軟件測試基礎(42集)
  5. 瘋狂LoadRunner全新視頻【小強軟件測試系列】(19集)
責任編輯:林師授 來源: CodingLabs
相關推薦

2014-04-04 09:53:18

2048C++

2023-08-07 15:18:29

游戲開發鴻蒙Arkts

2012-01-10 15:17:49

2014-06-19 10:02:32

Haskell代碼

2014-10-13 13:44:00

AngularJS2048

2011-11-14 10:17:35

手機游戲移動游戲

2022-05-13 11:36:59

DDoS攻擊網絡攻擊

2020-11-12 09:44:43

鴻蒙

2014-05-09 10:12:57

2048移動應用

2022-05-11 15:20:31

機器學習算法預測

2023-12-29 11:38:20

2018-01-17 21:34:43

AI框架資源庫優點

2020-12-31 10:24:37

Python元旦旅游代碼

2024-12-16 09:18:34

2015-08-11 09:13:16

2048WEB開發

2012-12-28 09:54:29

手機游戲產品設計

2019-08-12 10:32:30

大數據數據科學云計算

2014-03-10 09:22:31

LuaLua開發

2022-03-29 11:46:31

漏洞黑暗之魂死亡循環
點贊
收藏

51CTO技術棧公眾號

久久久视频6r| 日韩一级免费在线观看| 亚洲精品人妻无码| 在线播放不卡| 国产亚洲综合久久| 久久久久久综合网| 老牛影视精品| 亚洲欧洲日产国产综合网| 懂色av一区二区三区在线播放| 日本熟妇一区二区| 欧美黄色录像片| 亚洲国产精品999| 依人在线免费视频| 国产乱码精品一区二三赶尸艳谈| 国产欧美中文在线| 国产不卡一区二区在线观看 | 亚洲成人三级| 不卡的av电影| 成人国内精品久久久久一区| 男人午夜免费视频| 牛牛国产精品| 在线观看日韩www视频免费| 又色又爽又黄18网站| 91欧美精品| 欧美日韩在线第一页| 国产91porn| 一级日本在线| 久久久电影一区二区三区| 国产传媒一区二区| 国产婷婷在线视频| 蜜桃视频一区二区三区| 91精品国产精品| 免费人成年激情视频在线观看| 成人黄色av| 亚洲色在线视频| 性色av蜜臀av色欲av| 日韩精品视频一区二区三区| 欧美日本在线观看| 亚洲国产高清av| 视频在线日韩| 狠狠躁天天躁日日躁欧美| 成人免费a级片| 性欧美猛交videos| 亚洲女人的天堂| 黄色a级在线观看| 色老头视频在线观看| 欧美国产精品中文字幕| 日本一区二区在线| 国产午夜在线视频| 国产欧美精品一区| 日产精品高清视频免费| 国产视频网址在线| 国产色产综合产在线视频| 久热国产精品视频一区二区三区| 亚洲区小说区图片区| av一区二区不卡| 精品视频第一区| 亚洲欧美日韩动漫| 久久免费看少妇高潮| 精品国产福利| 男同在线观看| 国产欧美一区二区三区在线老狼| 三区精品视频| 暖暖日本在线观看| 亚洲免费av网站| 精品视频在线观看一区| 国产传媒在线观看| 欧美视频在线观看 亚洲欧| 成人观看免费完整观看| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲一卡二卡三卡四卡五卡| 人妻无码久久一区二区三区免费| 多野结衣av一区| 色综合久久综合中文综合网| 国产又粗又长又大的视频| 欧美成人福利| 精品人在线二区三区| 国产精品一区二区人妻喷水| 深爱激情久久| 久久久精品亚洲| 国产精品16p| 首页国产欧美久久| 成人做爽爽免费视频| 亚洲免费成人在线| 久久美女高清视频 | 欧美在线高清| 欧美亚洲伦理www| 一级黄色短视频| 成人丝袜视频网| 日本一区高清不卡| 在线观看av免费| 欧美性xxxx在线播放| www.cao超碰| 日韩精品丝袜美腿| 搡老女人一区二区三区视频tv| 青青草手机在线视频| 久久亚洲美女| 91在线短视频| 国产高清av在线| 一区二区三区蜜桃网| 久久久久久久久久久免费视频| 日韩三区四区| 日韩精品亚洲视频| 91精品一区二区三区蜜桃| 在线视频亚洲| 亚洲综合av影视| 男人av在线| 一区二区三区国产精品| 99免费视频观看| 凹凸成人在线| 精品国偷自产在线| 日韩在线播放中文字幕| 国产黄色成人av| 亚洲精品一区二区三区四区五区 | 黑人巨大精品欧美一区二区三区 | av图片在线观看| 国产激情一区二区三区四区| 日韩福利二区| 国产欧洲在线| 日韩欧美一卡二卡| 青青草自拍偷拍| 亚洲女同在线| 国产精品一区二区三区不卡 | 亚洲精品国产精华液| 欧美亚洲日本在线观看| 狼人天天伊人久久| 欧美激情精品久久久久久大尺度| 中文字幕人妻互换av久久| 99国产精品久久久| 免费看欧美黑人毛片| 精品国产18久久久久久二百| 在线观看日韩www视频免费| 国产精品视频一区在线观看| 99视频国产精品| 久久福利一区二区| 视频精品国内| 欧美成人在线免费| 国产强伦人妻毛片| 亚洲欧美在线高清| 亚洲精品久久久久久宅男| av一区二区在线观看| 国产91精品高潮白浆喷水| 高h放荡受浪受bl| 亚洲精品国产视频| wwwxxxx在线观看| 欧美在线视屏| 97人人做人人人难人人做| 18视频在线观看网站| 欧美一区三区四区| 在线免费观看亚洲视频| 日本熟妇毛茸茸丰满| 国产欧美日韩一区二区三区四区| 7m精品福利视频导航| 国产综合在线播放| 亚洲国产成人av网| 亚洲国产精品成人综合久久久| 一区二区亚洲| 精品国产乱码一区二区三区四区| 国产免费拔擦拔擦8x在线播放 | 欧美香蕉大胸在线视频观看 | 国产小视频一区| 亚洲一区二区三区在线看| 佐佐木明希电影| 亚洲激情av| 久久伦理网站| 日韩制服诱惑| 久久亚洲综合国产精品99麻豆精品福利| 一级全黄裸体免费视频| 亚洲男人的天堂一区二区| 国产一级二级av| 精品福利av| 日韩国产美国| 亚洲免费一区| 欧美极品第一页| 欧美扣逼视频| 欧美老年两性高潮| 欧美成人精品欧美一级| 99在线热播精品免费| 国产精品久久久久9999小说| 91精品一区二区三区综合| 成人久久18免费网站漫画| 蜜桃视频www网站在线观看| 国产亚洲一区精品| 亚洲av无码一区二区三区dv| 日韩欧中文字幕| 三级黄色在线观看| 99免费精品在线观看| 另类小说色综合| 日韩手机在线观看| 国产一区二区三区黄视频 | 麻豆疯狂做受xxxx高潮视频| kk眼镜猥琐国模调教系列一区二区 | 97人妻天天摸天天爽天天| 蜜桃视频在线观看一区二区| 男女日批视频在线观看| 国产欧美日韩免费观看| 亚洲综合小说区| 日韩新的三级电影| 欧美精品videos| 自拍视频在线网| 亚洲精品久久7777777| 一级片视频播放| 欧美色道久久88综合亚洲精品| 国产视频不卡在线| 成人av电影在线播放| jizz18女人| 亚洲一区视频| 日韩成人三级视频| 天天插综合网| 欧洲精品国产| 国产在线播放精品| 成人国产精品日本在线| 神马久久资源| 91高清免费视频| 欧美xxx黑人xxx水蜜桃| 中文字幕欧美国内| 神马久久高清| 日韩你懂的电影在线观看| 伊人久久国产精品| 日韩欧美综合在线视频| 精品成人免费视频| 亚洲综合丁香婷婷六月香| 情侣偷拍对白清晰饥渴难耐| 国产欧美中文在线| 欧美多人猛交狂配| 久久综合九色综合97婷婷女人| 国产精久久久久| 国产精品亚洲视频| 国产性生活一级片| 久久精品国产精品青草| 激情视频综合网| 久久精品首页| 无码aⅴ精品一区二区三区浪潮 | 色8久久人人97超碰香蕉987| 男人的天堂一区二区| 亚洲高清在线精品| 久久婷婷国产麻豆91| 亚洲自拍偷拍欧美| 18精品爽视频在线观看| 亚洲伊人色欲综合网| 欧美人与禽zozzo禽性配| 亚洲精品中文在线观看| www青青草原| 一区二区三区精密机械公司| 欧美日韩精品在线观看视频| 一区二区三区中文免费| 东方av正在进入| 亚洲激情图片一区| 久久精品一级片| 亚洲线精品一区二区三区| 久久中文字幕在线观看| 亚洲成人av中文| 天堂网一区二区三区| 岛国av一区二区| 永久免费无码av网站在线观看| 色悠悠久久综合| 正在播放木下凛凛xv99| 欧美精品自拍偷拍动漫精品| 97精品久久人人爽人人爽| 欧美一区午夜视频在线观看| 囯产精品久久久久久| 亚洲第一区在线| 日韩黄色影片| 中文国产亚洲喷潮| 尤物yw193can在线观看| 国内自拍欧美激情| 欧美大电影免费观看| 国产精品露脸自拍| 电影91久久久| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 国产精品成人一区二区三区电影毛片 | 成人av免费在线看| 亚洲三级精品| 亚洲一区二区三区精品视频| 欧美日本中文| 能在线观看的av| 久久er精品视频| 国产精品一区二区无码对白| 久久久一区二区| 国产美女福利视频| 精品女厕一区二区三区| 中文字幕久久久久| 亚洲福利视频网站| 成a人v在线播放| 欧美精品福利视频| 亚洲精品在线影院| 岛国一区二区三区高清视频| 激情婷婷综合| 丁香婷婷综合激情| 奇米四色…亚洲| 中文字幕乱视频| 中文幕一区二区三区久久蜜桃| 免费在线视频观看| 日本国产一区二区| 刘亦菲毛片一区二区三区| 一本色道久久综合狠狠躁篇的优点| 亚洲淫性视频| 国产精品久久av| 精品网站aaa| 妞干网这里只有精品| 久久久精品网| 天天躁日日躁狠狠躁免费麻豆| 成人欧美一区二区三区1314| 人妻 日韩精品 中文字幕| 日韩亚洲欧美高清| 天堂аⅴ在线地址8| 欧美伊久线香蕉线新在线| 免费精品一区二区三区在线观看| 色播五月综合| 国产日韩一区| 国产免费无码一区二区| 国产精品视频yy9299一区| 中文字幕视频网站| 亚洲第一精品夜夜躁人人爽 | 中文字幕第六页| 国产精品三级av| 337p粉嫩色噜噜噜大肥臀| 日韩不卡在线观看| 国产www视频在线观看| 91在线精品播放| 青青一区二区三区| 日本www高清视频| 久久先锋影音av| 日本va欧美va国产激情| 精品久久人人做人人爽| 性欧美videoshd高清| 91九色国产在线| 亚洲91久久| 国产永久免费网站| 国产精品欧美极品| 中国一级片黄色一级片黄| 国产亚洲精品成人av久久ww| 亚洲最大成人| 欧美日韩国产精品一区二区| 99视频精品免费观看| 你懂的在线观看网站| 亚洲小说欧美激情另类| 亚洲国产精品久久久久久6q| 欧美大肥婆大肥bbbbb| 免费看日产一区二区三区 | 新狼窝色av性久久久久久| 国产精品久久无码| 狠狠躁天天躁日日躁欧美| 欧美少妇另类| 国产成人一区三区| heyzo久久| 91丨九色丨蝌蚪| 自拍偷拍亚洲综合| 99精品视频免费看| 久久99热精品这里久久精品| av日韩在线播放| 免费超爽大片黄| 91视频精品在这里| 国产日韩在线免费观看| 一个人www欧美| 青青国产精品| 成人小视频在线观看免费| aaa欧美日韩| 日本精品入口免费视频| 综合av色偷偷网| 警花av一区二区三区| 黄色激情在线视频| 久久一区二区三区国产精品| 一级久久久久久| 久久久国产成人精品| 亚洲超碰在线观看| 国产黄页在线观看| 中文欧美字幕免费| 精品久久久久中文慕人妻| 久久久亚洲精选| 国产精品三级| 天天做天天干天天操| 亚洲一区在线看| 国产天堂在线| 97se视频在线观看| 亚洲欧美日韩国产一区| 91社区视频在线观看| 精品国产免费一区二区三区四区 | 91在线观看免费高清| 亚洲美女91| 亚洲一级理论片| 欧美v亚洲v综合ⅴ国产v| 电影亚洲精品噜噜在线观看| 日本高清xxxx| 久久婷婷成人综合色| 国产精品久久久久久久久毛片 | 男人操女人逼免费视频| 国产精品私人影院| 可以免费看毛片的网站| 国产精品专区一| 亚洲三级视频| 91麻豆精品久久毛片一级| 亚洲成人激情在线| 欧美aaaaaa| 超碰97人人射妻| 一区二区三区日韩欧美精品 | 欧美激情综合色| 日韩亚洲一区在线| aaaaa一级片| 日韩免费视频一区|