为什么不用matlab做人工智能

为什么不用matlab做人工智能,第1张

(1)首先是定位问题,matlab是个软件产品,解决是模拟问题,程序员是造软件产品的人,程序员用的是java、python、c语言、h5等来造软件产裂此品,程序员本质工作中很少遇到模拟问题。

(2)MATLAB在程序员行业,使用相对小众,MATLAB可能会用到的岗位,比如数腊源袜据分析师、算法工程师等岗位,并且相对来说可通过python、R语言等替代。

(3)成本问题,价格有点小贵,对互联网公司来说,开源的轮激软件一大堆,为啥要用个收费这么贵的软件?

问题:

有3个传教士和3个野人要过河,只有一艘船,这艘船每次只能载2个人过河,且无论哪边野人的数量大于传教士的数量时,野人就会吃掉传教士。怎样让他们都安全过河?

C语言源代码:

#include <stdio.h>

#include <string.h>

#define STEP_MAX 20 //来回过河的次数

#define KIND_NUM 3 //每个种类的数量

#define BOAT_NUM 2 //船的载重量

typedef enum

{

BOAT_THIS,//船在本岸

BOAT_THAT,//船在对岸

} boat_t

typedef enum

{

ROAD_GO,//过河

ROAD_COME,//回来

} road_t

typedef struct

{

int ye//对岸野人数量

int man//对岸传教士数量

boat_t boat//船是否在对岸

} state_t//一种局面

typedef struct

{

int ye//野人过河数量

int man//传教士过河的数量

road_t road//回来或稿并厅过河

} step_t//一个步骤

state_t states[STEP_MAX]={0}

step_t steps[STEP_MAX]={0}

//判断所有的野人和传教士是否都到了对岸

bool final(state_t s)

{

const state_t cs=

{

KIND_NUM,

KIND_NUM,

BOAT_THAT

}

if(memcmp(&cs,&s,sizeof(state_t))==0)

{

return true

}

return false

}

//是否会发生野人杀传教士

bool bad(state_t s)

{

if(((KIND_NUM-s.ye)>(KIND_NUM-s.man) &&(KIND_NUM-s.man)>0)

||(s.ye>s.man &&s.man>0))

{

return true

}

return false

}

//第n种局面是否跟前面的相重复

bool repeat(state_t s[],int n)

{

int i

for (i = 0i <ni++)

{//已经有这种情况了

if (memcmp(&states[i], &states[n], sizeof(states[i])) == 0)

{

return true

}

}

return false

}

void output(step_t steps[STEP_MAX],int n)

{

char *kinds[KIND_NUM]={"野人","传教士"}

char *routine[2]={"过河.","回来."}

int i

for (i = 0i <ni++)

{

if((steps[i].ye * steps[i].man)>0)

{

printf("%d个%s和%d个%s%s\n",steps[i].ye,kinds[0],

steps[i].man,kinds[1],routine[steps[i].road])

}

else if(steps[i].ye>0)

{

printf("%d个%s%s\n",steps[i].ye,kinds[0],

routine[steps[i].road])

}

else if(steps[i].man>0)

{

printf("%d个%s%s\n",steps[i].man,kinds[1],

routine[steps[i].road])

}

}

printf("\n")

}

//搜索过河方案(n表示过河次数)

void search(int n)

{

int i,j

if(n>STEP_MAX)

{//步数限制太少了

printf("Step Overflow!")

return

}

if(final(states[n]))

{//都到对岸了

output(steps,n)

return

}

if(bad(states[n]))

{//发生了野人杀传教士了蔽拿

return

}

if(repeat(states,n))

{/键隐/与前面的局面相重复了

return

}

if(states[n].boat==BOAT_THIS)

{//船在本岸

for (i = 0i <= BOAT_NUM &&i<=(KIND_NUM-states[n].ye)i++)

for (j = 0j <= BOAT_NUM-i &&j<=(KIND_NUM-states[n].man)j++)

{

if(i==0 &&j==0)

{

continue

}

steps[n].ye=i

steps[n].man=j

steps[n].road=ROAD_GO

memcpy(&states[n+1], &states[n], sizeof(state_t))

states[n+1].ye+=i

states[n+1].man+=j

states[n+1].boat=BOAT_THAT

search(n+1)

}

}

else

{

for (i = 0i <= BOAT_NUM &&i<=states[n].yei++)

for (j = 0j <= BOAT_NUM-i &&j<=states[n].manj++)

{

if(i==0 &&j==0)

{

continue

}

steps[n].ye=i

steps[n].man=j

steps[n].road=ROAD_COME

memcpy(&states[n+1], &states[n], sizeof(state_t))

states[n+1].ye-=i

states[n+1].man-=j

states[n+1].boat=BOAT_THIS

search(n+1)

}

}

}

int main()

{

search(0)

return 0

}

泻药,在我看来,你应该先把机器学习的算法都学习下。然磨首余后推导下,这个时候数学就很关键了,没有数学底子学机器学习完全是扯淡

然后在可以做一些小案例,这个时候再谈用什么语言吧。R,MATLAB,Python都可以。Python只是用的多一点而已。

大二,下学期应该可以进实芹誉验室学习下。这样进步的快好多。

另外octave就不要用了。直接用Python就好。也别听什么人工智能不智能,都是机器学习,媒体瞎滚炒作而已。说白了这么多年还是那些算法~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12475944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存