當前位置:首頁 » 礦機知識 » grin演算法礦機

grin演算法礦機

發布時間: 2021-06-13 07:11:33

① A*演算法java實現

首先,你要知道走迷宮的思路:就是遇到岔路都往一個方向,比如往右,遇到死路就回頭,回頭遇到岔路繼續往右。
線法線在同一平面上,反射光線與入射光線分

② 什麼才叫真正的虛擬數字貨幣

1、真正的虛擬貨幣限量不增發!
2、真正的虛擬貨幣必須在國際交易平台交易,可變現
3、真正的虛擬貨幣有開源代碼!有自己獨立的錢包!每一個幣都有自己的代碼,有自己的價值。
4、真正的虛擬貨幣可以通過礦機挖礦!有自己特定演算法。
5、真正的虛擬貨幣是可以和比特幣、美元兌換的!
6、真正的虛擬貨幣是可以相互兌現的!

③ 用java怎麼實現A*演算法

代碼實現(Java)
1.輸入
(1)代表地圖二值二維數組(0表示可通路,1表示路障)
int[][]maps={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,0,1,1,1,0,0},
{0,0,0,1,0,0,0,0,0,1,1,0,0,0,0},
{0,0,0,1,0,0,0,0,1,1,0,0,0,0,0},
{0,0,0,1,0,0,0,0,1,0,0,0,0,0,0},
{0,0,0,1,0,0,0,0,1,0,0,0,0,0,0}
};123456789123456789
(2)按照二維數組的特點,坐標原點在左上角,所以y是高,x是寬,y向下遞增,x向右遞增,我們將x和y封裝成一個類,好傳參,重寫equals方法比較坐標(x,y)是不是同一個。
publicclassCoord
{
publicintx;
publicinty;

publicCoord(intx,inty)
{
this.x=x;
this.y=y;
}

@Override
publicbooleanequals(Objectobj)
{
if(obj==null)returnfalse;
if(objinstanceofCoord)
{
Coordc=(Coord)obj;
returnx==c.x&&y==c.y;
}
returnfalse;
}
}2223
(3)封裝路徑結點類,欄位包括:坐標、G值、F值、父結點,實現Comparable介面,方便優先隊列排序。
<Node>
{

publicCoordcoord;//坐標
publicNodeparent;//父結點
publicintG;//G:是個准確的值,是起點到當前結點的代價
publicintH;//H:是個估值,當前結點到目的結點的估計代價

publicNode(intx,inty)
{
this.coord=newCoord(x,y);
}

publicNode(Coordcoord,Nodeparent,intg,inth)
{
this.coord=coord;
this.parent=parent;
G=g;
H=h;
}

@Override
publicintcompareTo(Nodeo)
{
if(o==null)return-1;
if(G+H>o.G+o.H)
return1;
elseif(G+H<o.G+o.H)return-1;
return0;
}
}
(4)最後一個數據結構是A星演算法輸入的所有數據,封裝在一起,傳參方便。:grin:
publicclassMapInfo
{
publicint[][]maps;//二維數組的地圖
publicintwidth;//地圖的寬
publicinthight;//地圖的高
publicNodestart;//起始結點
publicNodeend;//最終結點

publicMapInfo(int[][]maps,intwidth,inthight,Nodestart,Nodeend)
{
this.maps=maps;
this.width=width;
this.hight=hight;
this.start=start;
this.end=end;
}
}
2.處理
(1)在演算法里需要定義幾個常量來確定:二維數組中哪個值表示障礙物、二維數組中繪制路徑的代表值、計算G值需要的橫縱移動代價和斜移動代價。
publicfinalstaticintBAR=1;//障礙值
publicfinalstaticintPATH=2;//路徑
publicfinalstaticintDIRECT_VALUE=10;//橫豎移動代價
publicfinalstaticintOBLIQUE_VALUE=14;//斜移動代價12341234
(2)定義兩個輔助表:Open表和Close表。Open表的使用是需要取最小值,在這里我們使用Java工具包中的優先隊列PriorityQueue,Close只是用來保存結點,沒其他特殊用途,就用ArrayList。
Queue<Node>openList=newPriorityQueue<Node>();//優先隊列(升序)
List<Node>closeList=newArrayList<Node>();1212
(3)定義幾個布爾判斷方法:最終結點的判斷、結點能否加入open表的判斷、結點是否在Close表中的判斷。
/**
*判斷結點是否是最終結點
*/
privatebooleanisEndNode(Coordend,Coordcoord)
{
returncoord!=null&&end.equals(coord);
}

/**
*判斷結點能否放入Open列表
*/
(MapInfomapInfo,intx,inty)
{
//是否在地圖中
if(x<0||x>=mapInfo.width||y<0||y>=mapInfo.hight)returnfalse;
//判斷是否是不可通過的結點
if(mapInfo.maps[y][x]==BAR)returnfalse;
//判斷結點是否存在close表
if(isCoordInClose(x,y))returnfalse;

returntrue;
}

/**
*判斷坐標是否在close表中
*/
privatebooleanisCoordInClose(Coordcoord)
{
returncoord!=null&&isCoordInClose(coord.x,coord.y);
}

/**
*判斷坐標是否在close表中
*/
privatebooleanisCoordInClose(intx,inty)
{
if(closeList.isEmpty())returnfalse;
for(Nodenode:closeList)
{
if(node.coord.x==x&&node.coord.y==y)
{
returntrue;
}
}
returnfalse;
}353637383940414243444546
(4)計算H值,「曼哈頓」法,坐標分別取差值相加
privateintcalcH(Coordend,Coordcoord)
{
returnMath.abs(end.x-coord.x)+Math.abs(end.y-coord.y);
}12341234
(5)從Open列表中查找結點
privateNodefindNodeInOpen(Coordcoord)
{
if(coord==null||openList.isEmpty())returnnull;
for(Nodenode:openList)
{
if(node.coord.equals(coord))
{
returnnode;
}
}
returnnull;
}
(6)添加鄰結點到Open表
/**
*添加所有鄰結點到open表
*/
(MapInfomapInfo,Nodecurrent)
{
intx=current.coord.x;
inty=current.coord.y;
//左
addNeighborNodeInOpen(mapInfo,current,x-1,y,DIRECT_VALUE);
//上
addNeighborNodeInOpen(mapInfo,current,x,y-1,DIRECT_VALUE);
//右
addNeighborNodeInOpen(mapInfo,current,x+1,y,DIRECT_VALUE);
//下
addNeighborNodeInOpen(mapInfo,current,x,y+1,DIRECT_VALUE);
//左上
addNeighborNodeInOpen(mapInfo,current,x-1,y-1,OBLIQUE_VALUE);
//右上
addNeighborNodeInOpen(mapInfo,current,x+1,y-1,OBLIQUE_VALUE);
//右下
addNeighborNodeInOpen(mapInfo,current,x+1,y+1,OBLIQUE_VALUE);
//左下
addNeighborNodeInOpen(mapInfo,current,x-1,y+1,OBLIQUE_VALUE);
}

/**
*添加一個鄰結點到open表
*/
(MapInfomapInfo,Nodecurrent,intx,inty,intvalue)
{
if(canAddNodeToOpen(mapInfo,x,y))
{
Nodeend=mapInfo.end;
Coordcoord=newCoord(x,y);
intG=current.G+value;//計算鄰結點的G值
Nodechild=findNodeInOpen(coord);
if(child==null)
{
intH=calcH(end.coord,coord);//計算H值
if(isEndNode(end.coord,coord))
{
child=end;
child.parent=current;
child.G=G;
child.H=H;
}
else
{
child=newNode(coord,current,G,H);
}
openList.add(child);
}
elseif(child.G>G)
{
child.G=G;
child.parent=current;
//重新調整堆
openList.add(child);
}
}
}85960618596061
(7)回溯法繪制路徑
privatevoiddrawPath(int[][]maps,Nodeend)
{
if(end==null||maps==null)return;
System.out.println("總代價:"+end.G);
while(end!=null)
{
Coordc=end.coord;
maps[c.y][c.x]=PATH;
end=end.parent;
}
}12345678910111234567891011
(8)開始演算法,循環移動結點尋找路徑,設定循環結束條件,Open表為空或者最終結點在Close表

publicvoidstart(MapInfomapInfo)
{
if(mapInfo==null)return;
//clean
openList.clear();
closeList.clear();
//開始搜索
openList.add(mapInfo.start);
moveNodes(mapInfo);
}

/**
*移動當前結點
*/
privatevoidmoveNodes(MapInfomapInfo)
{
while(!openList.isEmpty())
{
if(isCoordInClose(mapInfo.end.coord))
{
drawPath(mapInfo.maps,mapInfo.end);
break;
}
Nodecurrent=openList.poll();
closeList.add(current);
addNeighborNodeInOpen(mapInfo,current);
}
}

④ AUV公鏈的機制是怎麼樣的

AUV公鏈採取了活性證明機制的共識機制,所有數據默認公開,通過其公共性來產生自己的安全性

熱點內容
比特幣遠期合約 發布:2025-08-12 17:56:05 瀏覽:222
區塊鏈的存儲量與耗電量 發布:2025-08-12 17:54:35 瀏覽:749
usdt三個月不兌換 發布:2025-08-12 17:37:11 瀏覽:955
doge是什麼詞 發布:2025-08-12 17:36:14 瀏覽:804
現在購買什麼礦機好 發布:2025-08-12 17:33:55 瀏覽:342
信用算力logo 發布:2025-08-12 17:17:38 瀏覽:11
中國區塊鏈應用研究院 發布:2025-08-12 16:49:55 瀏覽:804
有些平台為啥轉usdt不收手續費 發布:2025-08-12 16:33:29 瀏覽:662
以太坊新分叉 發布:2025-08-12 16:32:02 瀏覽:137
fk數字貨幣非小號 發布:2025-08-12 16:00:20 瀏覽:828