MATLAB(R和C++)大肠杆菌合成生物机械数学模型

🎯要点

🎯合成大肠杆菌生物学网络 | 🎯量化基因型-表型图 | 🎯化学诱导离散浓度下培养细菌评估整个浓度范围内的表达模式 | 🎯定性更改合成模型拓扑结构、定量更改相互作用的强度 | 🎯开发机械数学模型 | 🎯微生物生长和荧光蛋白简化模型纳入常微分方程模型

📜微生物图拓扑用例

📜Python和C++骨髓细胞进化解析数学模型

📜Python成像质谱流式细胞术病理生理学

📜Python药物副作用生物图分析算法和矩阵降维算法

📜C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型

🍪语言内容分比


🍇C++和Python多语言汉明距离

在信息论中,两个等长字符串或向量之间的汉明距离是相应符号不同的位置数。换句话说,它衡量将一个字符串更改为另一个字符串所需的最少替换次数,或者说,将一个字符串转换为另一个字符串的最少错误数。在更一般的上下文中,汉明距离是用于测量两个序列之间编辑距离的几种字符串度量之一。它以美国数学家理查德·汉明的名字命名。主要应用是编码理论,更具体地说是块码,其中等长字符串是有限域上的向量。

应用示例

给定一个包含 N 个元素的数组,创建一个新数组,该数组是给定数组的旋转,并且两个数组之间的汉明距离最大。 任务是打印给定数组和新数组之间的最大汉明距离。

输入:N = 3,arr = {1,4,1}

输出:2

解释:给定数组的可能旋转 = 4 1 1 和 1 1 4。在每种情况下,汉明距离均为 2。因此最大汉明距离将为 2。

输入:N = 4,arr = {2,4,8,0}

输出:4

解释: 在给定数组的可能旋转中,旋转 8 0 2 4 和 0 2 4 8 的最大汉明距离为 4。

简单处理方法是创建另一个大小为原始数组两倍的数组,使得这个新数组(复制数组)的元素只是原始数组中按相同序列重复两次的元素。例如,如果原始数组是 1 4 1,则复制数组是 1 4 1 1 4 1。现在,遍历复制数组并在每次移位(或旋转)时找到汉明距离。因此,我们检查 4 1 1、1 1 4、1 4 1,并选择汉明距离最大的输出。

例如:

给定数组 arr[]={2, 4, 6, 8}。

新数组 brr[]={2, ,4, 6, 8, 2, 4, 6, 8} , count=0

  • 在第一次迭代中: {2, 4, 6, 8} & {2 ,4, 6, 8, 2, 4, 6, 8} ,count=1
  • 在第二次迭代中: {2, 4, 6, 8} & {2 ,4, 6, 8, 2, 4, 6, 8} ,count=2
  • 在第三次迭代中: {2, 4, 6, 8} & {2 ,4, 6, 8, 2, 4, 6, 8} ,count=3
  • 在第四次迭代中: {2, 4, 6, 8} & {2 ,4, 6, 8, 2, 4, 6, 8} ,count=4
  • count = 原始数组的大小,因此输出为 4

我们将创建另一个大小为原始数组两倍的数组,并将元素逐个插入其中,两次。现在我们将对数组执行旋转,并且对于每次旋转,我们将检查原始数组的值是否与新创建的数组匹配。

  • 如果它们不匹配,我们将增加我们的count值
  • 值递增后,我们将执行一个条件来检查最大值,以检查可以获得的最大值。
  • 否则,如果值不匹配,我们不必执行任何操作
  • 在检查循环内,我们还必须检查计数器的值是否=原始数组的大小,因为它是我们可以获得的最大值。如果条件匹配,我们可以返回该值。这个条件优化了我们的代码。
C++ 查找另一个数组,使得汉明与原数组的距离最大
C++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int maxHamming(int arr[], int n)
{

	int brr[2 * n + 1];
	for (int i = 0; i < n; i++) {
		brr[i] = arr[i];
		brr[n + i] = arr[i];
	}

	int maxHam = 0;

	for (int i = 1; i < n; i++) {
		int currHam = 0;
		for (int j = i, k = 0; j < (i + n); j++, k++)
			if (brr[j] != arr[k])
				currHam++;

		if (currHam == n)
			return n;

		maxHam = max(maxHam, currHam);
	}

	return maxHam;
}

int main()
{
	int arr[] = { 2, 4, 6, 8 };
	int n = sizeof(arr) / sizeof(arr[0]);
	cout << maxHamming(arr, n);
	return 0;
}
Python 查找另一个数组,使得汉明与原数组的距离最大
Python 复制代码
def maxHamming( arr , n ):

	brr = [0] * (2 * n + 1)
	for i in range(n):
		brr[i] = arr[i]
	for i in range(n):
		brr[n+i] = arr[i]

	maxHam = 0

	for i in range(1, n):
		currHam = 0
		k = 0
		for j in range(i, i + n):
			if brr[j] != arr[k]:
				currHam += 1
				k = k + 1

		if currHam == n:
			return n
		
		maxHam = max(maxHam, currHam)
	
	return maxHam

arr = [2, 4, 6, 8]
n = len(arr)
print(maxHamming(arr, n))
C 查找另一个数组,使得汉明与原数组的距离最大
C 复制代码
#include <stdio.h>

int max(int num1, int num2)
{
	return (num1 > num2) ? num1 : num2;
}

int maxHamming(int arr[], int n)
{

	int brr[2 * n + 1];
	for (int i = 0; i < n; i++) {
		brr[i] = arr[i];
		brr[n + i] = arr[i];
	}

	int maxHam = 0;

	for (int i = 1; i < n; i++) {
		int currHam = 0;
		for (int j = i, k = 0; j < (i + n); j++, k++)
			if (brr[j] != arr[k])
				currHam++;

		if (currHam == n)
			return n;

		maxHam = max(maxHam, currHam);
	}

	return maxHam;
}

int main()
{
	int arr[] = { 2, 4, 6, 8 };
	int n = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", maxHamming(arr, n));
	return 0;
}
Javascript 查找另一个数组,使得汉明与原数组的距离最大
Javascript 复制代码
<script>
function maxHamming(arr, n)
{
	let brr = new Array(2 *n + 1);
	for (let i = 0; i < n; i++){
		brr[i] = arr[i];
		brr[n+i] = arr[i];
		}
	let maxHam = 0;

	for (let i = 1; i < n; i++)
	{
		let currHam = 0;
		for (let j = i, k=0; j < (i + n); j++,k++)
			if (brr[j] != arr[k])
				currHam++;

		if (currHam == n)
			return n;

		maxHam = max(maxHam, currHam);
	}

	return maxHam;
}

	let arr = [2, 4, 6, 8];
	let n = arr.length;
	document.write(maxHamming(arr, n));

</script>

👉参阅、更新:计算思维 | 亚图跨际