UVa 1456 - Cellular Network(概率DP)

Cellular Network

Description

Download as PDF

A cellular network is a radio network made up of a number of cells each served by a base station located in the cell. The base station receives call signals from mobile users (mobiles) in the cell it serves, which then connects the calls to the wired land-line telephone network. When a call is requested to connect to a mobile, the cellular network must know in which cell the mobile is located so that the call is routed to the base station of the cell appropriately.

Mobiles move from once cell to another in a cellular network. Whenever a mobile reports its new cell as it crosses boundaries of cells, the cellular network would know its exact cell at any time and finding (paging) the mobile becomes a trivial task. But it is usually infeasible for a mobile to report its new location each time it enters a new cell because of the insufficiencies of resources such as the radio bandwidth. But normally at the time of a call arrival, the cellular network knows a limited number of cells where the mobile is located. In this situation, a lot of paging strategies are developed to locate a mobile efficiently. The ultimate goal of paging strategies is to minimize both the time delay and cost of paging until the mobile is found.

Now we define our problem formally. The location area is the set of n cells C = {c1, c2,..., cn} such that the mobile is guaranteed to be in one of these cells at the time of a call arrival. Suppose that it is possible to page any subset of thesen cells in a unit of time (paging rounds) and find out if the mobile is located in one of the cells paged. The fastest strategy to find the cell where the mobile is located is to page all then cells in the first and only round. However this strategy uses a lot of wireless bandwidth.

In many cases, the cellular network knows about the whereabouts of the mobile. This knowledge can be modeled withn probability values, where the probability of the mobile being present in a cell can be estimated for each of thesen cells at the time of a call arrival. Let pi be the probability that the mobile is located at the cellci and all the probabilities are independent. A sequential paging strategy is to page the cells sequentially inn paging rounds terminating once the mobile is found. Then the average cost of paging (number of cells paged),$ \overline{​{C}}$ , and the average paging delay (number of paging rounds) in locating the mobile,$ \overline{​{D}}$, can be expressed as follows:

$\displaystyle \overline{​{C}}$$\displaystyle \sum^{​{n}}_{​{i=1}}$(ixpi), $\displaystyle \overline{​{D}}$$\displaystyle \sum^{​{n}}_{​{i=1}}$(ixpi).

The parallel paging strategy is to page the cells in a collection of cells simultaneously. Sequential paging strategy has lower paging cost than parallel paging strategy, but at the expense of larger paging delay. The method of parallel paging is to partition the cells in a location area into a series of indexed groups referred to aspaging zones. Let Z1,Z2,..., Zw be the partition of the location areaC (i.e., a partition of C intow groups), where each Zi is non-empty and corresponds to a distinct paging zone. When a call arrives for a mobile, the cells in the first paging zoneZ1 are paged simultaneously in the first round and then if the mobile is not found in the first round of paging, all the cells in the second paging zoneZ2 are paged, and so on. Let the number of cells in the paging zoneZi be denoted by ni = | Zi|, and let $ \pi_{​{i}}^{}$ be the corresponding zone probabilities of the users in the paging zoneZi, where $ \pi_{​{i}}^{}$ =$ \sum_{​{c_{j} \in Z_{i}}}^{}$pj. Then the average cost of paging (number of cells paged),$ \overline{​{C}}$, and the average paging delay (number of paging rounds) in locating the mobile,D, can be expressed as follows:

$\displaystyle \overline{​{C}}$ =$\displaystyle \sum^{​{w}}_{​{i=1}}$($\displaystyle \sum^{​{i}}_{​{j=1}}$)$\displaystyle \pi_{​{i}}^{}$,$\displaystyle \overline{​{D}}$$\displaystyle \sum^{​{w}}_{​{i=1}}$(ix$\displaystyle \pi_{​{i}}^{}$).

In parallel paging strategy, there is a tradeoff between bandwidth for time. For example, we increases the number of paging zones, then the paging cost could be decreased. If we decrease the number of paging zones, then the paging cost could be increased. Furthermore, for a fixed number w of paging zones, the paging cost could be different to the strategies how the cells in location area are partitioned.

For example, there are n = 5 cells in a location areaC = {c1, c2,...,c5} and the probability of each cells in C are as follows:


cic1c2c3c4c5
pi0.30.050.10.30.25


If the cells in C are partitioned into two paging zonesZ1 = {c1, c2,c3}, Z2 = {c4,c5}, the average cost of paging, $ \overline{​{C}}$, and the average paging delay in locating the mobile, $ \overline{​{D}}$, are:


$ \overline{​{C}}$ =n1$ \pi_{​{1}}^{}$ + (n1 +n2)$ \pi_{​{2}}^{}$ = 3(0.3 + 0.05 + 0.1) + (3 + 2)(0.3 + 0.25) = 3x 0.45 + 5 x 0.55 = 4.1

$ \overline{​{D}}$ = 1$ \pi_{​{1}}^{}$ +2$ \pi_{​{2}}^{}$ = 1(0.3 + 0.05 + 0.1) + 2(0.3 + 0.25) = 1x 0.45 + 2 x 0.55 = 1.55


If the cells in C are partitioned into two paging zonesZ1 = {c1, c4},Z2 = {c2, c3, c5}, the average cost of paging,$ \overline{​{C}}$, and the average paging delay in locating the mobile,$ \overline{​{D}}$, are:


$ \overline{​{C}}$ =n1$ \pi_{​{1}}^{}$ + (n1 +n2)$ \pi_{​{2}}^{}$ = 2(0.3 + 0.3) + (3 + 2)(0.05 + 0.1 + 0.25) = 2x 0.6 + 5 x 0.4 = 3.2

$ \overline{​{D}}$ = 1$ \pi_{​{1}}^{}$ +2$ \pi_{​{2}}^{}$ = 1(0.3 + 0.3) + 2(0.05 + 0.1 + 0.25) = 1x 0.6 + 2 x 0.4 = 1.4


Given the number of cells in a location area C, the probabilities of each cells that a mobile is located at the cell, and the fixed numberw of paging zones, write a program to partition the cells inC into w paging zones such that the average cost of paging to find the location of the mobile is minimized.

Input

Your program is to read from standard input. The input consists ofT test cases. The number of test cases T is given in the first line of the input. Each test case consists of two lines. The first line of each test case contains two integers. The first integer,n, is the number of cells in a location area, and the second integer,w, is the number of paging zones, where 1$ \le$w$ \le$n$ \le$100. The second line of each test case contains n integersu1, u2,..., un, where the probabilitypi for each cell ci in C is pi = ui/(u1 + u2 +... + un). All integers in the second line are between 1 and 10,000.

Output

Your program is to write to standard output. Print exactly one line for each test case. The line should contain the minimum average cost of paging to find the location of the mobile. The output should have a precision of exactly 4 digits after decimal point. You may round to the 4 digits after decimal point or round off at the 4-th digit after decimal point.

The following shows sample input and output for two test cases.

Sample Input

2 
5 2 
30 5 10 30 25 
5 5 
30 5 10 30 25

Sample Output

3.2000 
2.3000

题意:手机在蜂窝中的定位问题是一个基本的问题。假设蜂窝网络已经知道手机处于 c1, c2, c3,....cn 这些都区域中的一个,最简单的方法就是同时在这些区域寻找手机。但这样做很浪费时间,由于蜂窝网络可以知道手机在这不同区域的概率,因此折中的方法就是把这些区域分成 w 组, 然后依次访问。比如,已经知道手机可能位于 5 个区域中,概率分别为 0.3, 0.05, 0.1, 0.3, 0.25, w = 2, 其中一种方法是先同时访问 {c1,c2, c3}, 再同时访问 {c

4,c5},访问区域的数学期望值为 3*(0.3+ 0.05+0.1)+(3+2)*(0.3+0.25) = 4.1 。另一种访问方法是先同时访问 {c1,c4}, 再同时访问{c2,c3, c5},访问区域的数学期望值为 2*(0.3+0.3)+(3+2)*(0.05+0.1+0.25) = 3.2。


题目给出的不是概率值,是一些整数。 u1,u2,u3,...un,手机在 Ci 的概率是 Pi = ui / (u1+u2+u3+....+un)。


思路:简单的概率DP

先把各个区域的概率值排序,概率大的排前面。再处理前缀和,这样子就可以分为连续的一段一段来处理了。

状态转移方程:

dp [ i,j ]  表示前 i 个分为 j 个连续区间时的最小期望值,把前 k-1 个分为 j-1 个连续区间, 再把 k 到 i 作为一个连续区间。遍历所有 k 求最小值。

dp [ i,j ]  = min { dp [ i,j ],dp [ k-1,j-1 ] + i * ( p [ i ] -p [ k-1 ] )
其中  1 <= i <= n 1 <= j <= w,1 <= k <= i


<span style="font-size:18px;">#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;

const int INF = 1<<29;
const double PI = acos(-1.0);
const double e = 2.718281828459;
const double eps = 1e-8;
const int MAXN = 110;
double p[MAXN];
double dp[MAXN][MAXN];

bool cmp(double x, double y)
{
    return x > y;
}

int main()
{
    freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
    int n, w;
    int Case;
    cin>>Case;
    while(Case--)
    {
        cin>>n>>w;
        double sum = 0;
        memset(p, 0, sizeof(p));
        for(int i = 1; i <= n; i++)
        {
            cin>>p[i];
            sum += p[i];
        }
        for(int i = 1; i <= n; i++)
        {
            p[i] /= sum;
        }
        sort(p+1, p+1+n, cmp);
        for(int i = 1; i <= n; i++)
        {
            p[i] += p[i-1];
            fill(dp[i], dp[i]+1+w, INF);   // 初始化
        }
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= w; j++)
            {
                for(int k = 1; k <= i; k++)
                {
                    dp[i][j] = min(dp[i][j], dp[k-1][j-1]+(p[i]-p[k-1])*i);
                }
            }
        }
        printf("%.4f\n", dp[n][w]);
    }
    return 0;
}
</span>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值