【发布时间】:2018-09-15 23:58:18
【问题描述】:
我在练习竞争性编程时遇到了以下问题。我手动解决了它,有点设计一种方法,但我的答案是错误的,我无法想象如何扩展我的方法。
问题:
N 家咖啡连锁店正在通过激烈的广告战来争夺市场份额。每天都会有一定比例的客户被说服从一个连锁店切换到另一个连锁店。
给出了当前的市场份额和客户转换的每日概率。如果广告永远持续下去,市场份额的最终分配会是什么?
假设:总市场份额为 1.0,客户转换的概率与其他客户和天数无关。
示例:2 家咖啡连锁店:A 和 B 的市场份额 A:0.4 B 的市场份额:0.6。
每天,客户从 A 切换到 B 的概率为 0.2 每天,客户从 B 切换到 A 的概率为 0.1
input: market_share=[0.4,0.6],
switch_prob = [[.8,.2][.1,.9]]
output: [0.3333 0.6667]
直到这里的一切都是问题的一部分,我没有形成示例或假设,它们是随问题给出的。
My_attempt:在我的理解中,切换概率表示从A切换到B的概率。
因此,
market_share_of_A = current_market_share - lost_customers + gained_customers and
marker_share_of_B = (1 - marker_share_of_A)
iter_1:
lost_customers = 0.4 * 0.8 * 0.2 = 0.064
gained_customers = 0.6 * 0.2 * 0.1 = 0.012
market_share_of_A = 0.4 - 0.064 + 0.012 = 0.348
marker_share_of_B = 1 - 0.348 = 0.652
iter_2:
lost_customers = 0.348 * 0.1 * 0.2 = 0.00696
gained_customers = 0.652 * 0.9 * 0.1 = 0.05868
market_share_of_A = 0.348 - 0.00696 + 0.05868 = 0.39972
marker_share_of_B = 1 - 0.32928 = 0.60028
my answer: [0.39972, 0.60028]
如前所述,预期的答案是[0.3333 0.6667]。
我不明白我哪里错了?如果有问题,那一定是我对问题的理解。请提供您的想法。
在示例中,他们演示了一个简单的案例,即只有两个竞争对手。如果还有更多呢?让我们说三个 -
A, B, C。我认为输入必须以[[0.1, 0.3, 0.6]..]的形式提供切换概率,因为A可能会将其客户输给B和C,这样的例子很多。现在,我必须计算至少两家公司的市场份额,第三家将是(1-sum_of_all)。在计算 B 的市场份额时,我将不得不计算它失去的客户以及获得的客户,公式为(current - lost + gained)。获得的将是gain_from_A and gain_from_C的总和。它是否正确?
【问题讨论】:
-
@meowgoesthedog,可能从问题中并不清楚,但直到示例的所有内容都是问题的一部分,他们谈论概率的语言,除了一开始提到一些客户切换链。我已经相应地更新了问题。
-
啊,我现在看到我的想法有错误,抱歉。根据我当前的理解,最终状态只是切换概率的函数,而不是初始状态,因为系统将达到一个独特的平衡点。这可以用一些矩阵代数来解决(因为它归结为一组联立线性方程)
-
@algrid 是的,这是马尔可夫链的明显例子
标签: algorithm math probability distribution