站外题求助【特别急】
  • 板块题目总版
  • 楼主wyy_2011
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/5/20 20:01
  • 上次更新2023/10/23 15:13:07
查看原帖
站外题求助【特别急】
962076
wyy_2011楼主2023/5/20 20:01

题目描述

在⼈⼯智能中,“分类” 是⼀项⾮常重要的任务。例如,公安系统通过⼈⼯智能分类潜在的电信诈骗,并进⾏及时的预警。现在我们考虑⼀种最简单的 “线性⼆分类器”,它由 n 个整数参数 (常数)a1,a2......an组成。在输⼊⼀组整数x1,x2......xn时,如果a1·x1+a2·xn < 0 成⽴,则分类器输出 true,否则分类器输出 false。如果分类器的输⼊ (称为 “特征”) 选择得当,即便是简单的线性分类器也能取得很好的分类效果。

现在,我们得到了两个⽤于同⼀分类任务的分类器:
分类器 A,当a1·x1+a2·x2+...+an·xn<=0时输出 true,否则输出 false

分类器 B,当b1·x1+b2·x2+...+bn·xn<=0时输出 true,否则输出 false

由于 A 和 B 是两个不同的分类器,它们可能会在某些输⼊的 x 上产⽣分歧,给出不同的分类结果——这样的问题值得我们特别关注。因此,你的任务就是求出⼀组x1,x2...xn,,使得分类器 A 和 B 返回不同的结果。

为了帮助⼤家理解,我们假设a1,b1分别保存在数组 a 和 b 中 (数组下标从 1 到 n)。你的任务就是求出数组 x 的元素x[1],x[2],....x[n]。使下⾯的函数 diverge 返回 true:
int n; // 参数/输⼊的个数
bool classify(int param[], int x[]) {
   int y = 0;
   for (int i = 1; i <= n; i++) { 
      y += param[i] * x[i];
   }
   if (y <= 0) {
      return true; 
   } else {
      return false; 
     } 
}
bool diverge(int x[]) {
   return classify(a, x) != classify(b, x);
}
2023/5/20 20:01
加载中...