雖然一次周賽的幾個(gè)題目說明不了太多問題,比如這個(gè)周賽的Hard題目就是板子題,算不上Hard,也許把第三題和第四題的順序換一下比較合適。但是,GPT4的表現(xiàn)已經(jīng)嚴(yán)重超出了我的預(yù)期。對(duì)于這次周賽的四個(gè)題目,GPT4的表現(xiàn)如下:題目1: 錯(cuò)了一次,簡(jiǎn)單提示后修正了錯(cuò)誤,2A了。題目2: 1A。題目3: 無法通過提示的方法讓GPT4做對(duì),WA。題目4: 1A。不得不說,GPT4在模擬,模板題方面已經(jīng)具備了不錯(cuò)的理解和處理能力,感覺在更強(qiáng)大的數(shù)據(jù)和更大模型的加持下以后大語言模型的做題能力能趕上一大半人類。| 從提升算法能力的角度來說,我不建議任何讀者使用GPT4來做Leetcode。
0x0. 前言
GPT4論文(https://cdn.openai.com/papers/gpt-4.pdf)的第4節(jié)展示了GPT4的各種能力,在表格的最后三行展示了GPT4做Leetcode的能力,我比較感興趣,所以本文打算來探索一下這種能力。看一下GPT4配合一個(gè)只發(fā)出prompt的人的表現(xiàn)如何。
為了公平起見,我這里選取了LeetCode第 102 場(chǎng)雙周賽(https://leetcode.cn/contest/biweekly-contest-102/)也就是2023年4月15日的這一場(chǎng)。我打算用GPT4來嘗試解開這場(chǎng)周賽的4道題目,但是不一定能都解開,只是測(cè)試一下GPT4的寫算法的能力。
我將全程只指揮GPT4寫代碼來解題,我自己不做任何的Coding工作。
先建立一個(gè)GPT4的新對(duì)話:
0x1. 第一題
第一題是個(gè)Easy的題目,描述如下:
接下來,我們先把題面輸入到GPT4。
GPT4給了我們一個(gè)回復(fù),感覺挺對(duì)的,但是這種格式不能讓Leetcode直接通過,我們?cè)僮孏PT4更新一下格式:
接下來就是緊張的時(shí)刻,我們把這個(gè)類的代碼提交給Leetcode。
結(jié)果錯(cuò)誤,Leetcode返回了錯(cuò)誤的例子。我們把這個(gè)錯(cuò)誤的例子再返回給GPT4讓它自己debug。
我們把它修正后的代碼提交給Leetcode。
現(xiàn)在GPT4順利通過了第一道題目。
0x2. 第二題
我們問一下GPT4
我們提交給Leetcode試試。
直接通過,GPT4真有點(diǎn)強(qiáng)。
0x3. 第三題
問問GPT4:
這個(gè)問題感覺還是比較麻煩的,GPT4給出的方案感覺一眼假,不過我們不妨運(yùn)行一下它給的代碼。
我們發(fā)現(xiàn)編譯就報(bào)錯(cuò)了。我們返回這個(gè)結(jié)果給GPT4:
現(xiàn)在確實(shí)可以編譯了,但我們發(fā)現(xiàn)這個(gè)程序連樣例都無法通過。顯然,GPT4根本沒有理解這道題目的意思,結(jié)果傾向于是“胡說八道”。再加強(qiáng)一些提示:
最后GPT4輸出的代碼仍然無法通過樣例。這道題,GPT4應(yīng)該是無能為力了。
從這道題目,我們可以看到GPT4的局限性,那就是對(duì)于這種思維性的題目,GPT4很難理解這道題目暗含的意思,設(shè)計(jì)的算法也是錯(cuò)誤的。
題解可以參考:https://leetcode.cn/problems/cousins-in-binary-tree-ii/solution/bfssuan-liang-ci-pythonjavacgo-by-endles-b72a/
0x4. 第4題
接下來我們看一下第4題,這個(gè)題是比較模板的題,我們看一下GPT4能否解開。
我們來看一下GPT4給出的答案能否通過樣例。
是可以通過給出的樣例的。我們提交試試。
這道題GPT4的完整代碼實(shí)現(xiàn)如下:
classGraph{
public:
Graph(intn,vector<vector<int>>&edges){
this->n=n;
for(constauto&edge:edges){
adjList[edge[0]].push_back({edge[1],edge[2]});
}
}
voidaddEdge(vector<int>edge){
adjList[edge[0]].push_back({edge[1],edge[2]});
}
intshortestPath(intnode1,intnode2){
vector<int>dist(n,INT_MAX);
dist[node1]=0;
priority_queueint,int>,vectorint,int>>,greaterint,int>>>pq;
pq.push({0,node1});
while(!pq.empty()){
intcurrNode=pq.top().second;
intcurrDist=pq.top().first;
pq.pop();
if(currNode==node2)returncurrDist;
if(currDist>dist[currNode])continue;
for(constauto&neighbor:adjList[currNode]){
intnextNode=neighbor.first;
intedgeCost=neighbor.second;
if(currDist+edgeCostreturn-1;
}
private:
intn;
unordered_map<int,vectorint,int>>>adjList;
};
雖然這道題很難說是Hrad的難度,但1A真的太嚇人了。。。
0x5. 總結(jié)+預(yù)測(cè)
雖然一次周賽的幾個(gè)題目說明不了太多問題,比如這個(gè)周賽的Hard題目就是板子題,算不上Hard,也許把第三題和第四題的順序換一下比較合適。但是,GPT4的表現(xiàn)已經(jīng)嚴(yán)重超出了我的預(yù)期。
對(duì)于這次周賽的四個(gè)題目,GPT4的表現(xiàn)如下:
題目1: 錯(cuò)了一次,簡(jiǎn)單提示后修正了錯(cuò)誤,2A了。題目2: 1A題目3: 無法通過提示的方法讓GPT4做對(duì),WA。題目4: 1A。
不得不說,GPT4在模擬,模板題方面已經(jīng)具備了不錯(cuò)的理解和處理能力,感覺在更強(qiáng)大的數(shù)據(jù)和更大模型的加持下以后大語言模型的做題能力能趕上一大半人類。| 從提升算法能力的角度來說,我不建議任何讀者使用GPT4來做Leetcode。
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4551瀏覽量
92016 -
代碼
+關(guān)注
關(guān)注
30文章
4670瀏覽量
67761 -
GPT
+關(guān)注
關(guān)注
0文章
347瀏覽量
15179
原文標(biāo)題:0x5. 總結(jié)+預(yù)測(cè)
文章出處:【微信號(hào):GiantPandaCV,微信公眾號(hào):GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論