马尔可夫矩阵的 JavaScript 程序
矩阵是一种二维数组,它具有一定的行数,每行有相同的列数,通过行数和列数可以得到元素在任何特定的索引。对于马尔可夫矩阵,每一行的和必须等于 1。我们将实现一个代码来创建一个新的马尔可夫矩阵,并查找当前给定的矩阵是否是马尔可夫矩阵。
问题简介
在给定的问题中,我们必须编写一个代码,通过使用二进制数据来生成马尔可夫矩阵,即仅使用零和一,因为我们知道马尔可夫矩阵是其中行的总和必须的矩阵等于 1(这并不意味着它仅由二进制数组成),这意味着每一行中都会有一个 1,其他元素为零。
我们将实现的程序只是马尔可夫矩阵的一个特例。
对于第二个代码,我们将得到一个矩阵,并且必须查找当前矩阵是否是马尔可夫矩阵。让我们看看这两个代码 -
创建马尔可夫矩阵
在当前部分中,我们使用 0 和 1 的二进制数字来创建马尔可夫矩阵。让我们先看看方法,然后我们将转向代码实现 -
方法
在此代码中,我们将使用 new 关键字和数组创建一个矩阵。对于数组的每个索引,我们将再次创建一个数组来填充它。
对于矩阵的每一行,使用随机函数,我们将得到列数范围内的随机数,并将当前行的该列填充为 1,其他填充为 0。
最后我们将返回矩阵。
示例
// creating a Markov's Matrix using binary digits // defining the rows and columns var row = 4 var col = 5 function MarkovMat(row, col){ // creating an array of size row var arr = new Array(row); // traversing over the created array for(var i = 0; i < row; i++){ // creating an array of size column var brr = new Array(col); brr.fill(0) // making every element zero of current array // generating random number var k = Math.floor(Math.random()*5); // marking kth index as 1 brr[k] = 1 // adding columns to the current row arr[i] = brr; } // printing the values console.log(arr) } // calling the function MarkovMat(row,col)
时间和空间复杂度
在上面的代码中,我们已经移动了完整的矩阵,并且对于每次移动或遍历,我们每次都得到随机数,这需要恒定的时间。因此,上述代码的时间复杂度为 O(N*M),其中 N 是行数,M 是列数。
空间复杂度正好等于矩阵的大小,并且我们没有使用任何额外的空间。所以,上述代码的空间复杂度为O(N*M)。
检查当前矩阵是否为马尔可夫
在当前部分中,我们给定一个矩阵,并且必须查找当前矩阵是否是马尔可夫矩阵。让我们先看看方法,然后我们将转向代码实现 -
方法
在此代码中,我们将简单地遍历矩阵并为每一行获取其计数。如果当前行的计数为 1,则我们移动到下一行,否则我们将返回当前矩阵不是马尔可夫矩阵。
示例
// function to check whether the current matrix is // markov or not function isMarkov(mat){ var rows = mat.length var col = mat[0].length; // checking the sum of each row for(var i = 0; i < rows;i++){ var count = 0; for(var j =0; j<col; j++) { count += mat[i][j]; } if(count != 1){ console.log("The given matrix is not Markov's Matrix"); return } } console.log("The given matrix is Markov's Matrix"); } // defining the matrix1 matrix1 = [[0.5, 0, 0.5], [0.5, 0.25, 0.25], [1, 0.0, 0], [0.33, 0.34, 0.33]] console.log("For the matrix1: ") isMarkov(matrix1) // defining the matrix2 matrix2 = [[0.5, 1, 0.5], [0.5, 0.25, 0.25], [1, 0.0, 0], [0.33, 0.34, 0.33]] console.log("For the matrix2: ") isMarkov(matrix2)
时间和空间复杂度
在上面的代码中,我们遍历了矩阵并存储了每一列的和,使得上面代码的时间复杂度为O(N*M)。
上面的代码中我们没有使用任何额外的空间,使空间复杂度为O(1)。
结论
在本教程中,我们实现了马尔可夫矩阵的 JavaScript 程序。对于马尔可夫矩阵,每一行的和必须等于 1。我们实现了一个代码,使用随机数生成函数以 O(N*M) 的时间复杂度和相同的空间生成二进制马尔可夫矩阵。此外,我们还实现了一个代码,可以在 O(N*M) 时间内检查当前矩阵是否为马尔可夫矩阵。
以上是马尔可夫矩阵的 JavaScript 程序的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

探索前端中类似VSCode的面板拖拽调整功能的实现在前端开发中,如何实现类似于VSCode...

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
