Tuesday, March 21, 2017

We started reading the paper "Big Data and Cloud Computing: A survey of the State-of-the-Art and Research Challenges" by Skourletopoulos et al. This paper talks about the comparisons of data warehouse and big data as a cloud offering. IBM data scientists argue that the key dimensions of big data are : volume, velocity, variety and veracity.  A Big data as a service stack may get data from other big data sources, operational data stores, staging databases, data warehouses and data marts.  Zheng et al showed that the service generated big data included service logs, service QoS and service relationships in the form of services identification and migration. A cloud based big data analytics service provisioning platform named CLAaaS is presented in the literature to help describe the significant features of the workflow systems, such as multi-tenancy for a wide range of analytic tools and back-end data sources, user group customizations and web collaboration.
On the other hand, Analytics was described in a service oriented Decision Support System  in Demirkan and Delen's study.  This study shows a Decision support system is best organized by data flowing from information sources through the data service tier  which in turn transforms it for information service tier and finally analytics service tier.
#codingexercise
Highway  Billboard problem
Consider a highway of M miles. We have to place billboards on a highway such that revenue is maximized. The possible sites for billboards are given by x1 < x2 < ... xn. with revenues r1, r2 ... rn and these sites lie between 0 and M. No two billboards can be placed within t miles
int GetMaxRevenue(List<int> xi, List<int> ri, int m, int t, int i, int next) // i ranges from 1 to m
{
if (i <= 1) return 0;
if (next <=1) return 0;
if (next >= n) return GetMaxRevenue(xi, ri, m, t, i-1, next);
if (xi[next] != i)
   return GetMaxRevenue(xi, ri, m, t, i-1,next);
else{
      if (i <= t){
        return Math.max(GetMaxRevenue(xi, ri, m, t, i-1,next+1), ri[next]);
      }else{
       return Math.max(GetMaxRevenue(xi, ri, m, t, i-t-1,next+1)+ri[next], GetMaxRevenue(xi, ri, m, t, i-1));
      }
}
}
As with all dynamic programming methods with overlapping subproblems, memoization will help. 

No comments:

Post a Comment